软件工程第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
这个作业的目标 | 开发一个类似羊了个羊的游戏,学习pygame,提升编程能力,学会运用AIGC工具辅助写代码 |
学号 | 112200629 |
项目展示
源代码及图片已上传到github:
https://github.com/Actung10/Actung10/tree/homework2
项目介绍
前端设计
1.图案素材
均由文生图工具Craiyon生成,展示如下:
2.游戏界面
制作了主菜单界面、难度选择界面、游戏界面、说明界面、排行榜界面、胜利界面、失败界面。
(1)主菜单界面
包含开始游戏、说明、排行榜三个按钮。点击相应按钮跳出相应界面
(2)说明界面
显示游戏相关说明
(3)排行榜界面
按通过关卡数量大小进行排序,若通关关卡数量相同,则难度高的排名靠前。最多显示前五名。
(4)难度选择界面
有简单、普通、困难三个按钮,点击相应按钮进入相应难度模式。后面会具体介绍难度设计。
(5)游戏界面
每层图片略微有些偏移,有点层次感,但不偏移太多,使得玩家难以得知某张图片下还有几层,增加游戏的趣味性和挑战性。
(6)胜利界面
通过某关后显示的界面。
(7)失败界面
某关未通过时显示的界面。
游戏设计与算法介绍
1.游戏玩法
与羊了个羊基本相同。点击图片会到下方的选择区,选择区中有三张相同的图片时会自动消除。消除玩所有图片后胜利。无关卡数量上限。
2.撤销功能
在游戏中按Ctrl+C或撤销键撤回上步操作。可以无限次撤销。思路就是用两个列表分别保存每一步操作和每次选择区的状态。每次撤销时则取出两个列表的最后一个元素恢复状态,并将它们从两个列表中删去。
3.难度设计
游戏有三个难度,简单、普通和困难。简单难度下,图片有三层。普通难度下,图片有四层、困难难度下,图片有五层。不同难度倒计时的时间不同。
无论选择哪个难度,不同关卡难度亦有区别。前两关一定有办法通过,后面的关卡则有20%的概率一定有办法通过,有80%的概率是随机,不一定能通过。采用随机数的办法实现。代码如下:
4.倒计时功能
实现了倒计时功能,倒计时结束后图片未消完则游戏失败。
5.排行榜
使用排序算法实现。
6.一键通关
点击通关键或按下Ctrl+Z直接通过当前关卡,跳到胜利界面。
7.其他
将整个游戏封装成了一个类。使用了pygame.transform.scale来调整图片大小,使用pygame.MOUSEBUTTONDOWN来捕捉鼠标事件,pygame.KEYDOWN来捕捉键盘事件等。
测试样例
下面的gif展示了选择难度后进入游戏界面,以及图片的消除、多次撤销功能,包含了撤回的几种情况,测试均能通过。
AIGC表格
(1)AI辅助子任务
子任务 | 借助何种AIGC技术,实现了什么功能 | 效果如何? |
---|---|---|
图片生成 | 用Craiyon生成相关图片 | 生成的图片还算不错,可以使用 |
界面设计 | 用kimi生成代码 | 效果挺好,只需微调一些位置即可 |
按钮功能 | 用kimi生成代码 | 效果挺好 |
排行榜 | 用kimi辅助完成 | 效果较好,实现了功能 |
撤回功能 | 基本上自行完成,有用kimi辅助 | 帮助我完成了撤回功能的设计 |
评价:AI比较适合一些如调用pygame的一些功能、界面设计这种需求明确的任务,或者诸如写排序算法这样已有较为成熟的算法的任务,以及提供一些帮助和辅助,可以节省时间、提高效率。对于一些涉及到具体的复杂逻辑和细节的任务,大体上还是需要人类完成大部分工作,AI可以起到辅助作用。
(2)学习内容和心得体会
学习内容 | 我的收获 |
---|---|
使用文生图工具制作图片 | 运用AIGC工具进行辅助,提高效率 |
pygame相关知识 | 理解了pygame库的基本概念和用法,能够用于游戏开发 |
游戏设计 | 对如何规划和构建游戏的基本框架有了一定的了解 |
难度设计 | 能够根据需要设计不同难度等级,提升游戏的趣味性 |
撤销功能 | 实现了游戏中的撤销操作,提高了游戏的可玩性和用户体验,提升了编程能力 |
排行榜 | 学会了如何在游戏中实现玩家成绩的记录和展示 |
界面设计 | 对界面设计有了一定的了解 |
PSP表格
阶段 | 描述 | 预估用时(小时) | 实际用时(小时) | 备注 |
---|---|---|---|---|
计划 | 制定项目计划 | 0.15 | 0.15 | 较为合理,部分预估不准确 |
需求分析 | 确定游戏功能、需求和预期目标 | 0.5 | 0.5 | 完成对要做的功能的分析 |
软件开发 | 编码实现游戏逻辑、界面和功能 | 12 | 15 | 实现了界面设计和核心功能,但一些功能的设计花的时间超出了预期 |
测试 | 对游戏进行功能测试 | 1.5 | 2 | 发现了一些漏洞或未考虑到的情况,并且即时修改 |
优化 | 界面、游戏体验优化 | 3 | 3 | 对界面和游戏体验上有一些改进,增强用户体验感 |
总结 | 评估项目成果,总结经验教训 | 0.5 | 0.5 | 对于本次开发进行总结。这次游戏开发也提升了我的能力 |
评价:
总体来说想要实现的功能、界面等都完成了。也有用到AI进行辅助,提升了开发效率。但是耗费的时间还是超出了设想。另外美工上也还可以再加强。