软件工程第二次个人作业
这个作业属于哪个课程 | fzu-se2024 |
---|---|
这个作业要求在哪里 | 要求 |
这个作业的目标 | 熟悉借助AIGC编程,展现个人开发能力 |
学号 | 102201331 |
1. 指路-> 旅了个游
2. 项目介绍
- 素材来源
-
背景来自作业一dalle3生成的logo
-
游戏中的图片均为本人拍摄,无版权问题
-
游戏名为“旅了个游”,为了省去找素材的麻烦,项目初用自己拍的照片作为demo的图片,后面觉得效果不错,便以次为主题设计了这个游戏
-
- 特色功能
- 实现了类似“羊了个羊”的游戏模式
- 游戏分为三种难度,分别对应在三个省份的照片,难度越高,不同照片的种类越多
- 存在两个magic method,在游戏中按p可以直接获胜,按c可以清楚下方存储框中所有照片
本来想在每个难度再添加递进的闯关升级功能,可是ddl就这么来了,没有时间再去弄了orz
- 技术
- 使用pygame进行设计
- 第一次尝试以多文件方式编程,代码逻辑和结构更清晰,不会有太多重复冗余的部分。不过还是第一次尝试,还是有很多可以改进的地方。
之前用ipynb不小心把代码块删除无法恢复
- 没有用到什么特殊的算法,难点主要在分层图片选择的判断,除了遍历没有想到什么很好的方法
3. 测试
- 游戏画面
- 主界面、关卡选择界面、胜利界面、失败界面
4.AIGC表格
子任务 | 借助何种AIGC技术,实现了什么功能 | 效果如何? |
---|---|---|
游戏界面设计 | 借助Copilot生成代码框架,ChatGPT提供逻辑建议 | 通过Copilot快速搭建了pygame的基础代码结构,ChatGPT帮助细化了游戏逻辑和界面交互,实现了一个直观且响应迅速的游戏界面。 |
状态栏功能实现 | 借助Copilot生成状态栏类代码,ChatGPT优化逻辑 | 状态栏能够显示玩家选中的图片,并在满足消除条件时进行更新。Copilot帮助快速生成了类的基础结构,ChatGPT则在逻辑上提供了优化建议,使得状态栏功能运行流畅。 |
图片选择与消除逻辑 | 借助ChatGPT设计选择和消除算法 | 游戏中玩家可以通过点击选择相同的图片进行消除。ChatGPT帮助设计了选择和消除的算法,确保了游戏的核心玩法既简单又具有挑战性。 |
游戏流程控制 | 借助ChatGPT设计游戏状态机 | 游戏拥有多个状态,如主菜单、选择关卡、游戏进行中、游戏结束等。ChatGPT帮助设计了游戏状态机,使得游戏流程控制清晰,玩家可以顺畅地在不同游戏状态间切换。 |
- 心得体会
对于一个陌生的库,使用AIGC能够很好的了解库的简单使用方法,能够让我快速上手而不需要去查阅相关的tutorial。对于第一次写的逻辑,我会以注释的方式告诉copilot,我要实现什么功能,它能够用库中的函数提供一个框架,我再去查阅相关函数的使用方法,将个人需求补充到它给的框架之中,大大提高了编写的效率 - 学到的内容
这次作业,我主要是尝试了多文件编程,熟悉多文件编程为后面上手较大项目铺路,导入自己写的类,从而使代码能更好的维护和修改
更细的来说,学习到了pygame中的各种碰撞检测和原始的坐标检测方法,以及一些基本的绘制功能。
5. PSP表格
任务名称 | 预估耗时(h) | 实际耗时(h) |
---|---|---|
pygame使用学习 | 3 | 4 |
状态栏功能实现 | 1 | 1 |
界面设计 | 6 | 6 |
图片选择与消除逻辑 | 4 | 6 |
难度选择 | 1 | 1 |
界面美化 | 3 | 5 |
测试与调试 | 4 | 6 |
素材整理 | 2 | 2 |
代码整理 | 3 | 4 |
总用时 | 27 | 35 |
- 自我评价
- 完成过程
过程来说,有点拖,到最后时间才完成,很多任务比预想的更花时间。不过感觉完成了之后还是学到了很多东西,代码能力和debug的能力有所提升,不再像写算法那样在一个文件中解决问题,而是更有逻辑和结构的将一个大任务分解成多个小任务去解决 - 最终效果
差强人意吧,其实还构思了挺多模块的,碍于时间和其他任务的ddl,没有完成进一步的想法。不过最终展现的结果也满足了大部分要求,添加了悬停时候的选中框,也对界面进行了一定的美化。可以改进的地方还有音效和一些动画。
- 完成过程