软件工程第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
这个作业的目标 | 开发类似“羊了个羊”风格的消除类小游戏,学习使用AIGC编写代码 |
学号 | 042201401 |
已上传github链接:https://github.com/786260029/sheep_game
一、环境与工作准备
安装pygame
安装AIGC:codegeex
本次作业还用到了Kimi、openai等AI产品。本次作业所用的图片是可用于菲商业用途的,且我没有去水印(仔细看能看见
二、游戏功能需求分析
界面设计
游戏界面采用Pygame图形库进行构建,包括主菜单、游戏界面和结束界面。主菜单简洁明了,提供开始游戏和退出选项;游戏界面则注重图案的分层摆放与视觉效果,确保玩家能够清晰识别并操作;结束界面则根据游戏结果给出相应的反馈。
游戏逻辑
- 图案生成与消除:实现了图案的随机生成与分层摆放,确保玩家能够通过点击匹配并消除相同图案。
- 倒计时机制:引入了倒计时功能,增加了游戏的紧张感和挑战性。
- 难度设置:通过随机生成图案摆放顺序或设置不同关卡,逐步提升游戏难度,保持玩家的兴趣。
代码与AIGC结合
在本次项目中,我充分利用了CodeGeex等AIGC工具,辅助完成了约30%的代码编写工作。这些自动生成的代码片段不仅提高了开发效率,还在一定程度上保持了代码结构的清晰和可读性。
项目展示与测试
- 简单关卡及游戏胜利画面
- 困难关卡及游戏超时画面
https://s6.aconvert.com/convert/p3r68-cdx67/aes0n-h9zs7.webp - 困难关卡及游戏消除失败画面
uploading-image-333985.png
https://s6.aconvert.com/convert/p3r68-cdx67/a4w0g-9srn8.webp
后两个视频上传失败,请移步github,仓库中的两个MP4文件即使全部的演示视频。 - 游戏各界面
游戏主页面:
简单模式页面:
困难模式页面:
游戏失败页面:
游戏胜利页面:
项目展示
项目代码已上传至[GitHub仓库]https://github.com/786260029/sheep_game),欢迎查阅和下载。
AIGC技术应用与反思
AIGC表格任务
子任务 | 借助AIGC技术 | 实现功能 | 效果 |
---|---|---|---|
代码大纲 | openai | 编写代码框架,使我编写代码时逻辑更清晰 | 提高作业效率 |
对游戏主循环game_interface()函数的完善 | KIMI | 修改代码bug,解决图案一直闪现的问题 | 很好,解决了我没注意到的代码中的细节 |
注释编写 | CodeGeex | 辅助解释代码内容 | 提高作业效率 |
优缺点分析
优点:
- 提高开发效率:AIGC工具能够快速生成代码片段和设计方案,减轻开发者负担。
- 保持代码质量:通过学习和模仿个人代码风格,自动生成的代码具有较好的可读性和可维护性。
缺点:
- 依赖性强:过度依赖AIGC可能导致开发者失去对细节的掌控能力。
- 创造性受限:自动生成的内容可能缺乏创新和独特性。
适合与不适合的功能
适合:
- 重复性高的代码编写工作。
- 基于已知模式的算法实现。
- 简单的界面布局和设计。
不适合:
- 需要高度创造性的设计任务。
- 复杂逻辑和算法的独立开发。
- 涉及用户体验和交互细节的优化。
心得体会
- ai对于处理较短较简单的要求还是很聪明的,能够完整的写出一些函数(虽然经常需要返工,多次讲述要求都不明白,这个时候要么新建对话要么换个ai,总之ai是会被用傻的)对于多重要求和两三百行以上的代码,ai几乎不能很好的处理,有时修改一个bug时就偷偷把某个函数全部删掉了
- ai写注释写得很不错,每一行在干什么都很清楚
- 对于整体游戏逻辑的把握还是要靠自己。
PSP表格与总结
PSP阶段 | 活动描述 | 预估时间(分钟) | 实际时间(分钟) | 备注 |
---|---|---|---|---|
规划阶段 | 确定项目目标和范围 | 60 | 20 | 仔细阅读作业要求并思考如何下手 |
规划阶段 | 制定计划 | 30 | 10 | 设定时间表,分配资源 |
开发阶段 | 编写游戏主菜单和界面代码 | 60 | 160 | 利用Pygame实现界面元素和鼠标点击判定 |
开发阶段 | 实现图案生成与消除功能 | 180 | 240 | 编写随机生成和匹配消除逻辑 |
开发阶段 | 添加倒计时和难度设置功能 | 120 | 30 | 引入时间控制和难度调整机制 |
开发阶段 | 集成AIGC生成的代码片段 | 60 | 240 | 审查和整合自动生成的代码并修改 |
测试阶段 | 编写测试用例并执行测试 | 90 | 180 | 包括界面交互、逻辑功能和性能评估 |
测试阶段 | 修复发现的bug和进行回归测试 | 60 | 180 | 迭代测试,确保代码稳定 |
评估与总结阶段 | 评估项目成果和性能 | 45 | 50 | 分析项目数据,评估成功和不足之处 |
评估与总结阶段 | 撰写项目报告和文档 | 60 | 70 | 记录项目经验,总结技术和管理方面的收获 |
总计 | 7605 | 1180 | 包括了所有阶段和活动的预估与实际时间,帮助分析时间管理效率 |