Just do it!

软件工程第二次个人作业

这个作业属于哪个课程 软件工程
这个作业要求在哪里 作业要求
这个作业的目标 了解游戏开发的大致流程
学号 052205144

项目名称:抓肥羊🐑

github主页链接:poetry-joy (github.com)

github作业链接:[软工作业](git_demo/软件工程 at master · poetry-joy/git_demo (github.com))
运行catchFatsheep.py

一、游戏规则:

①玩家通过点击选择图案并消除,当所有图案被消除时游戏结束。
②玩家可以开出隐藏款大肥羊(不涉及侵权)
③玩家需要非常眼疾手快的进行游戏,游戏初始时间为60s,难度随着游戏关卡的变更陡然提升,主要体现在关卡游戏时间上的线性递减(例:第一关60s,第二关50s,…,第六关10s),给玩家带来高难度的挑战的体验
④游戏共设置六个关卡,六个关卡过后会弹出FMVP结算页面,之后自动退出程序(防沉迷)
⑤拓展功能:给老师和助教等尊贵的SVIP玩家设计了一个一键通关的按钮,在任意情境下(游戏中途)均可使用,可以节 约老师们检查我们的作业的时间

二、游戏演示:

​ ①主菜单进入游戏界面演示:

​ ②游戏玩法演示:

​ ③老师助教专用功能演示:

​ ④游戏失败演示:

​ ⑤游戏全通关演示:

三、小游戏实现步骤

​ (1)设计界面

​ ①主菜单

​ ②游戏界面

​ ③结束界面

​ (2)设计玩法

  • 消除游戏为基础的多图层堆叠游戏

  • 游戏难度飙升:,每进入下一关游戏时间骤减10s

​ (3)附加功能

  • 给老师和助教设计了一个一键通关的按钮,在任意情况下(游戏中途)可使用,可以节约老师们检查我们的作业的时间

四、小游戏实现代码

poetry-joy (github.com) 小小链接我已放好

五、AIGC

​ ①背景音乐:AI

​ ②背景图片:AI

​ ③水果:AI

​ ④小羊:(阿里巴巴矢量图标库)

​ ⑤胜利图片:AI+Ps

​ ⑥AIGC表格:

子任务 借助何种AIGC技术实现了什么功能 效果如何?
画主菜单 背景+按钮绘制 达到预期,样式需调
画游戏界面 背景绘制 达到预期,需微调
画游戏结束界面 背景+按钮绘制 达到预期
画倒计时 时间变换 达到预期,需微调
画道具 道具定位 达到预期
游戏胜利动画 动画演示 达到预期,需微调
道具使用动画 动画演示 达到预期,需微调
按钮的处理逻辑 页面变换 达到预期
图层堆叠 多个图层 本来想要交错型,始终调不好
检查是否能被消除 多层图块匹配问题 达不到预期,我大调
检查是否进入死局 偶数处理 效果一般
更新剩余时间动画 更新剩余时间 达到预期
结束整个游戏 FMVP结算动画 效果一般
主逻辑 实现整体流程 效果还可以

六、测试实例

①代码:

``

class TestGameLogic(unittest.TestCase):
    def setUp(self):
        # 初始化 Pygame 显示,以便测试图像部分
        pygame.display.set_mode((100, 100))

    def test_powerup_activation(self):
        """测试 PowerUp 的激活与动画更新"""
        power_up = PowerUp()
        self.assertFalse(power_up.active, "初始状态下,PowerUp 应为非激活状态")

        power_up.activate()
        self.assertTrue(power_up.active, "调用 activate 后,PowerUp 应变为激活状态")

        # 模拟经过的时间,并测试是否可以触发胜利条件
        layers = [Layer(original_patterns, (0, 0), is_top_layer=False)]
        power_up.update(layers)
        self.assertTrue(power_up.active, "动画未完成时,PowerUp 仍应处于激活状态")

        pygame.time.delay(power_up.animation_duration + 100)  # 等待足够时间
        power_up.update(layers)
        self.assertFalse(power_up.active, "动画完成后,PowerUp 应变为非激活状态")

    def test_layer_tile_management(self):
        """测试 Layer 类的图块管理"""
        layer = Layer(original_patterns, (0, 0), is_top_layer=False)
        row, col = 0, 0
        tile = layer.get_tile_at_position(row, col)
        self.assertIsNotNone(tile, "初始状态下,图块应存在")

        layer.remove_tile(row, col)
        self.assertIsNone(layer.get_tile_at_position(row, col), "调用 remove_tile 后,图块应被移除")

    def tearDown(self):
        pygame.quit()
        
if __name__ == '__main__':
    unittest.main()        
        
        

②测试结果:

七、AIGC表格

八、PSP表格

PSP 预估耗时 实际耗时
项目分析,明确需求 1 0.2
构建原型模型 1 0.1
项目准备工作 0.5 0.1
投入开发 12 10
调试和修改 2 15
测试 1 0.5
部署到web 0.5 暂无
复盘与总结 0.8 0.5
维护 持续跟进 持续跟进

个人评价:我在开发和需求分析过分追求速度,导致后期调试和修改阶段耗时较多,在开发中出现了一系列未预见到的问题。以后我会多在原型设计和测试阶段投入时间精力,以减少后期调试的工作量,确保项目的稳定性和质量。

posted on 2024-09-14 07:03  喜羊羊~~~  阅读(182)  评论(0编辑  收藏  举报

导航