软件工程第二次个人作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
这个作业的目标 | 1.学会使用python编写一个小游戏 2.学会使用AIGC工具帮助编写代码 |
学号 | 102201130 |
1.项目展示
项目仓库连接
https://github.com/gsgqh/mygame
2.项目介绍
游戏玩法
- 点击图案进入下方栏内,栏内出现3个相同图案即可消除,若栏内同时出现7个图案或游戏时间到了则游戏失败
前端设计
- 美术素材均来自于AI,由microsoft copilot(https://copilot.microsoft.com/)生成
*按钮位置和方块的摆放顺序均为本人设计,其它例如排行榜则全权由AI负责
游戏界面
A. 开始画面,包含难度选择和排行榜功能
B. 游戏界面,包含消除、计时、计分、撤销、返回功能
C. 排行榜界面,包含排名,难度,获取排名时间、返回功能
D. 成功失败界面,包含重开和退出
算法介绍
A. 随机生成方块
根据选择的难度所定义的模板,生成不同数量的方块,保证方块数量能被3整除,且相互之间数量不一定相同,且不会有某一种方块数量过多
因此设计了一个伪随机的算法,具体思路为每种方块数量都在平均数上下波动,如果上次向上波动,下次就一定向下波动
B. 撤回功能
思路其实很简单,保存上一次操作时方块的状态即可(依照蜘蛛纸牌思路,每次撤回都要扣除一分)
C. 明暗处理
不能点击的方块理应处于暗一点的状态提示玩家,切鼠标滑过时没有高亮效果,算法思路为遍历所有方块,对应每个方块,如果找不到比他层数更高,且覆盖他的方块,则视为可以点击
游戏设计
A. 游戏玩法:游戏玩法本身是羊了个羊的玩法,不多赘述
B. 难度设计:玩家选择不同的难度,更高的难度会有更多的方块种类,会有不同的方块层数和数量,例如简单难度是3层,而普通是5层,且根据方块摆放的密集程度,方块的大小也不相同,目的是尽可能摆满屏幕
C. 分数功能:分数功能是本游戏最核心的功能,由于有撤回功能的存在且游戏本身难度并不算高,因此游戏的目标是尽可能获取更多的分数,分数和时间功能息息相关,分数逻辑如下
1.每成功消除一次加一分
2.每使用一次撤回扣一分,没分则不扣除
3.若通关,则会根据剩余时间,以及难度系数作一个加权,得到最终分数(更高难度通关理应比低难度通关分数高)
D. 堆叠设计:设计为大小层,奇数为大层,偶数为小层,大层每四个方块对应小层一个方块
3.测试
1.对于方块生成是否能够让游戏通关,如果每次生成都要打一次的话,很浪费时间,因此直接打印各方块数量来进行调试
- 该图代表有六种方块,数量分别为15, 21, 18, 15, 21, 18
2.测试保存的分数是否正确,也通过打印信息来调试
3.测试撤回功能
想了以下几种情况,均通过测试(懒得录屏了,有点麻烦)
① 游戏开始直接撤回(此时撤回图标是暗的,无法撤回)
② 消除后撤回(没有问题,可以回到消除前的状态,且加分减分正好抵消)
③ 消除后栏内为空撤回(没有问题,依然可以回到消除前的状态)
④ 撤回后撤回(此时撤回图标是暗的,无法撤回)
撤回功能测试均通过
4.测试不同分辨率下游戏的表现 - 测试了1080P和2K分辨率下游戏是否不同,由于固定字体大小的原因,2K场景下可能会显得更空一些(已吸取教训,下次改进)
4.AIGC表格
子任务 | 借助何种AIGC技术,实现了什么功能 | 效果如何? |
---|---|---|
先生成整体游戏框架 | 使用copolit生成 | 生成基本没问题,为后续改动奠定基础 |
创建按钮功能 | 使用copolit生成 | 效果很好,耦合度极低,很方便调用 |
创建撤回功能 | 使用copolit生成 | 无法实现 |
生成排行榜 | 使用chatgpt生成 | 完全交由AI处理,生成的非常好,我只修改了一些显示的位置 |
生成美术素材 | 使用copolit生成 | 经过多次提示和修正,可以生成想要的效果 |
- 评价: AI在前端方面非常有优势,人类只要负责对位置的一些修改就好了,但是在设计一些复杂的算法模块,仍然还有所欠缺
5.PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 30 | 35 |
• Design Spec | • 生成设计文档 | 10 | 15 |
• Design Review | • 设计复审 | 20 | 15 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
• Design | • 具体设计 | 20 | 40 |
• Coding | • 具体编码 | 180 | 380 |
• Code Review | • 代码复审 | 20 | 70 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 150 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 5 | 5 |
• Size Measurement | • 计算工作量 | 5 | 5 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 20 |
合计 | 245 | 750 |
- 评价:总体来说设计的功能都完成了,做的比较满意,但是限于时间问题,动画没有做,方块都是瞬移的,以后可以改进