软件工程课程第二次个人作业
星穹铁道游戏开发总结博客
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业链接 |
这个作业的目标 | 熟悉并利用 AIGC 开发较为简单的小游戏 |
学号 | 102202105 |
1. 项目展示
本项目是一个基于Pygame框架开发的趣味消除类小游戏,灵感来源于“星穹铁道”游戏主题。玩家需要在倒计时内匹配图案进行消除。该项目已上传至GitHub,仓库链接如下:
2. 项目介绍
2.1 前端设计与特色功能
- UI设计:游戏界面以星穹铁道为背景,结合特色图案构建游戏元素,主菜单、游戏界面、游戏结束界面等界面简洁明了。
- 图案匹配消除:玩家通过点击图案进行消除,游戏提供多层次的图案遮挡和匹配逻辑,增加挑战性。
- 音效系统:游戏配有背景音乐、消除音效以及胜利/失败音效,增强玩家体验。
- 复活机制:游戏失败后,玩家可以选择观看广告来复活,并继续游戏。
- 难度控制:提供游戏难度选择和退出选项,界面简洁清晰。
2.2 使用的技术与算法
- Pygame:Pygame是一个Python游戏开发库,用于管理窗口、事件、图像、音效等,是本项目的主要开发框架。
- 图案匹配算法:通过三维列表实现图案的随机生成、显示与匹配。采用简单的消除规则——相同图案三消机制。
- 音效管理:通过Pygame的mixer模块加载和控制背景音乐与音效播放,确保音效与游戏状态同步。
2.3 实机演示
-
游戏初始界面
-
进入游戏页面
-
游戏成功页面
-
游戏初次失败页面
-
游戏看广告复活页面
-
游戏失败页面
实现思路展示
以下展示项目的整体结构与关键算法:
- 项目结构图
bash复制代码software_hk_2/
├── images/ # 存放游戏图案及背景图像
├── music/ # 存放背景音乐和音效
├── fonts/ # 存放字体文件
├── game.py # 游戏主程序
├── README.md # 项目说明
- 图案匹配算法
- 游戏中采用三维列表表示游戏板,每一层、每一行、每一列都存储着相应的图案。点击图案后,判断是否可以消除,并根据消除规则更新图案状态。
- 得分与排行榜更新
- 当玩家匹配成功后,分数会增加。游戏结束时,根据当前分数更新排行榜,并展示当前得分和历史最高分。
3. 测试
3.1 测试样例设计
-
功能测试:
- 图案消除测试:模拟用户点击图案,检查图案是否正确匹配消除。
- 排行榜测试:测试玩家得分是否能正确保存并显示在排行榜上。
- 音效测试:确保消除音效、背景音乐、胜利/失败音效在不同场景下正确播放。
3.2 测试结果展示
测试内容 | 预期结果 | 测试结果 |
---|---|---|
图案匹配与消除 | 点击相同图案三次时图案消除,得分增加 | 通过 |
排行榜更新 | 游戏结束后,排行榜显示最高得分 | 通过 |
音效播放 | 不同场景播放不同音效 | 通过 |
复活机制 | 失败后,观看广告复活游戏继续 | 通过 |
3.3 测试设计评价
本次测试覆盖了项目的主要功能和用户交互逻辑,能够验证游戏基本功能的正确性。通过多轮测试,确保了图案匹配、排行榜、音效、复活机制等核心功能的正确性,基本满足程序测试需求。后续可进一步优化针对不同分辨率设备的测试。
4. AIGC工具心得
子任务 | 借助何种 AIGC 技术,实现了什么功能 | 效果如何 |
---|---|---|
游戏设计 | GPT-4o:生成游戏逻辑、流程设计建议 | 帮助快速设计游戏逻辑,提供了清晰的开发思路。 |
图像生成 | DALL·E:生成游戏背景图片和图标 | 提供了高质量的图像素材,提升了游戏的视觉效果。 |
代码编写 | GPT-o1-preview:辅助编写和优化核心代码 | 编码效率提升,尤其是在逻辑复杂的部分。 |
音效集成 | GPT-o1-preview:音效集成方案和具体实现代码 | 音效无缝集成,增强了游戏的沉浸感。 |
排行榜功能 | GPT-4o:提供排行榜功能的实现建议 | 给出了良好的思路,但代码编写能力逊色于o1,实现效果不佳,需大量人工辅助。 |
5. PSP表格
为了更好地评估项目的开发过程,采用了PSP表格对任务进行分解,并记录预估耗时和实际耗时。如下表所示:
PSP阶段 | 任务描述 | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
计划 | 项目需求分析,功能确定 | 1 | 1 |
设计 | 游戏界面设计,功能模块划分 | 2 | 2.5 |
编码 | 编写主程序、图案匹配、音效管理、排行榜 | 4 | 5 |
测试 | 测试游戏逻辑,修复Bug | 2 | 2 |
报告编写 | 撰写项目文档与总结报告 | 1 | 1.5 |
总计 | 10 | 12 |
PSP表格总结
从实际耗时来看,编码阶段的耗时超过了预估,这主要是因为在实现复活机制和排行榜系统时遇到了一些意料之外的复杂性。尽管如此,项目最终按时完成,功能也得到了较好的实现。在后续项目中,可以进一步优化开发流程,合理分配时间。
6. 总结
通过本次项目开发,我不仅巩固了对Pygame的掌握,还进一步提升了算法设计和数据管理能力。整个项目过程中,通过分解任务、合理管理时间,我学会了如何高效地完成游戏开发项目。在未来的开发中,我会继续优化流程,探索更多有趣的功能与设计。