软件工程第二次个人作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
这个作业的目标 | 使用Python编写一个“羊了个羊”风格的消除类小游戏 |
学号 | 102202101 |
github作业链接:https://github.com/Endorphins-m/softenginneer/tree/main/task2
一、生成游戏相关图片
使用工具:豆包
二、任务分析
1.制作简洁的图形界面(主菜单),设计三种游戏难度按钮
2.设计类似于”羊了个羊“的游戏规则,每当选中区有三个相同图片则消除
3.增加倒计时功能,增加游戏紧张感,计时结束则游戏结束
4.增加得分功能,每消除一次得三分
三、游戏展示
1.静态界面展示
2.游戏界面展示
3.游戏失败界面展示
但选中区域已满时或者倒计时结束显示游戏失败
4.游戏胜利界面显示
四、项目介绍
前端设计:
1.图形用户界面(GUI):游戏使用Pygame库创建图形界面,包括开始菜单、游戏界面和结束界面。
2.动画和视觉效果:游戏中的动物图案和背景图片通过Pygame进行渲染和动画处理,增加了游戏的视觉效果。
3.计时器:游戏有一个倒计时功能,玩家需要在时间耗尽前尽可能多地消除图案。
4.得分系统:根据玩家消除的图案数量计算得分,并在游戏结束时显示最终得分。
使用的技术与算法:
1.Pygame库:用于创建游戏的图形界面和处理用户输入。
2.事件驱动编程:游戏循环通过监听事件(如鼠标点击)来响应玩家操作。
3.随机数生成:使用Python的random模块来随机生成动物图案的位置。
4.图像处理:使用Pygame的图像处理功能来加载、缩放和渲染动物图案和背景图片。
5.计时和时间管理:使用time模块来管理游戏的倒计时和加时道具的效果。
实现思路
1.初始化:游戏开始时,初始化Pygame库,设置屏幕大小,加载和缩放动物图案以及背景图片。
2.主游戏循环:游戏的主循环负责处理用户输入、更新游戏状态、绘制界面并更新显示。
3.图案生成:随机生成成对的动物图案,并在游戏区域内随机分布,保证游戏最后能胜利。
4.图案匹配:在用户点击选中图案时进入选中但未消除区域,当此区域有三个相同图案是进行消除并更新得分。
5.图案叠放:设计三维坐标系,最上层的图案定位可选择,非顶层图案不可选择。
6.模式选择:设计不同模式难度,增加图案叠放层数和图案种类。
7.计时器:游戏开始时启动一个计时器,实时更新剩余时间,并在时间耗尽时结束游戏。
8.游戏结束:当所有图案被消除或时间耗尽时,显示游戏结束界面,并显示最终得分。
监测用例
1.测试游戏启动
目的:验证游戏能否正常启动并显示主菜单。
步骤:运行游戏。
预期结果:游戏窗口打开,显示主菜单界面
2.测试不同模式图案生成
目的:验证游戏能否正确生成并显示重叠动物图案。
步骤:开始游戏,观察图案。
预期结果:所有动物图案正确生成并随机分布在游戏区域内
3.测试图案消除
目的:验证图案能否按照规则消除
步骤:选中图案进行消除
预期结果:所有动物图案都能选中消除并且分数增加
4.测试游戏结束条件
目的:验证游戏在时间耗尽或图案消除完时能否正确结束。
步骤:等待时间耗尽或消除所有图案。
预期结果:游戏结束,显示得分和结束界面。
5.测试得分计算与显示
目的:得分正确计算以及游戏结束正确显示
步骤:观察图案消除后得分变化以及游戏结束得分显示
预期结果:得分正确并且游戏结束进行显示
5.测试重新开始或退出
目的:验证玩家能否在游戏结束后选择重新开始或返回主菜单。
步骤:在游戏结束后点击重新开始或返回主菜单。
预期结果:游戏重新开始或进入主菜单界面
评价
1.清晰的游戏结构:代码组织良好,有明确的函数和类负责不同的游戏逻辑。
2.图形界面:使用 Pygame 库创建了一个图形界面,使得游戏易于交互。
3.计时器和得分系统:游戏有时间限制和得分机制,增加了游戏的挑战性。
4.事件处理:处理了基本的用户输入,如鼠标点击和退出事件。
5音效和动画:添加音效和动画可以提升游戏体验。
7.错误处理:代码中缺少错误处理,例如当图片文件夹路径错误或图片文件不存在时
8.未增加游戏道具以增强趣味性
AIGC表格
子任务 | 借助何种AIGC技术 | 实现了什么功能 | 效果如何? |
---|---|---|---|
游戏逻辑开发 | kimi | 辅助编写游戏循环、事件处理和图案匹配逻辑 | 显著提高了编码速度和代码质量,减少了编写样板代码的时间 |
图层错位堆叠 | kimi | 将图层堆叠摆放且随机生成分布 | 堆叠摆放并未实现,随机分布实现,后续不断修改调试 |
游戏功能完善 | kimi、豆包 | 通过提出需求制作功能代码框架、根据自身需要不断完善 | 提高代码编写速度以及促进功能多样化实现 |
图像资源生成 | 文生图工具(如 豆包) | 设计游戏图案和背景 | 提高了游戏的视觉吸引力,使游戏界面更加生动有趣 |
文档和注释编写 | kimi | 辅助编写项目文档和代码注释 | 提高了文档的质量和专业性,减少了语法和拼写错误 |
AIGC技术的优缺点
优点:
提高效率:自动化生成基础内容,减少人工重复劳动。
个性化定制:根据用户反馈和偏好生成个性化内容。
质量提升:通过AI辅助,提高代码和文档的专业质量。
代码请教:对于不了解的代码可以询问ai进行解释
缺点:
理解错误:有时不能正确理解需要,要不断调试,且代码生成量有限
依赖数据:生成内容的质量受限于训练数据的质量和多样性。
技术限制:某些复杂任务和高度创造性工作难以完全由AI替代。
适合与不适合的应用
适合的应用:
内容创作:自动生成文章、故事、诗歌等文本内容。
游戏开发:生成游戏关卡、敌人行为模式、游戏环境等。
艺术设计:创作绘画、音乐、动画等艺术作品。
数据增强:在机器学习中,用于生成额外的训练数据以提高模型性能。
个性化推荐:根据用户偏好生成个性化的内容推荐。
虚拟助手:提供个性化的对话和建议。
教育和培训:生成定制化的教育材料和模拟训练场景。
不适合AIGC的应用:
法律文件:法律文件需要精确无误,AIGC可能无法满足这一要求。
医疗诊断:医疗领域的准确性至关重要,AIGC的误判可能导致严重后果。
心理治疗:心理治疗需要专业的人类同理心和经验,AIGC难以替代。
新闻报道:虽然AIGC可以生成新闻稿,但对于需要深入调查和分析的报道,人类记者更为适合。
道德和伦理决策:涉及道德和伦理的复杂决策需要人类的判断。
创意策略规划:需要深度思考和创新策略的场景,AIGC可能无法提供足够的创意。
任何需要人类直觉和经验的领域:AIGC可能无法模拟人类的直觉和基于经验的决策。
总的来说,AIGC适合那些可以被明确定义、有固定规则或者需要大量重复性工作的领域。而在需要深度理解、复杂判断、创新思维或者高度个性化的领域,人类专家的作用难以被AIGC替代。此外,AIGC生成的内容可能需要人类的审核和监督,以确保质量和安全性
学习内容 | 收获 |
---|---|
Pygame 框架使用 | 了解了Pygame的基础使用,包括图形渲染与事件处理等,对其有一定的了解与基础。 |
图案加载与动态调整 | 掌握了资源动态加载和自适应布局技术,确保了游戏界面中图案的适配 |
图案分布随机性优化 | 实现了高级随机分布算法,优化了游戏图案的生成逻辑,满足游戏要求 |
时间管理与倒计时逻辑 | 设计并实现了精确的时间管理系统,通过倒计时机制有效提升了游戏的节奏和玩家的参与度。 |
AIGC工具应用 | 有效利用了人工智能辅助生成内容(AIGC)工具,以提高编码效率和创新设计,探索了AIGC在游戏开发中的前沿应用。 |
五、心得体会
以羊了个羊游戏为参考,将界面中的游戏图案分层叠放,在最上层未消除是不可选中下层图案,加入了计时器以及多种游戏难度,实现了基本框架。但游戏中并未增加游戏道具,趣味性稍低。同时个人认为游戏界面可进一步优化,将界面设计的更加精美。最后是AIGC使用体验,用AIGC生成长代码会有各种各样的错误,需要一步一步调试,才能得到正确结果。
4.4PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Development | 开发 | 660 | 790 |
• Analysis | • 需求分析 (包括学习新技术) | 180 | 200 |
• Design Spec | • 生成设计文档 | 20 | 15 |
• Design | • 具体设计 | 60 | 75 |
• Coding | • 具体编码 | 150 | 200 |
• Test | • 测试(自我测试,修改代码,提交修改) | 250 | 300 |
Reporting | 报告 | 120 | 135 |
• Test Repor | • 报告 | 90 | 100 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 35 |
合计 | 810 | 670 | 955 |
六、个人小结
首先分析任务得出代码要求,后用AIGC一步步进行实现,生成基础代码,再一步步进行修改。过程中遇到很多问题,AIGC有时也并不能很好理解客户需求,需要不断调试,不断修改,并且有些较为复杂的代码难以生存,生成代码量有限,且需要分析容易出现误差,在接近任务要求的过程中,遇到较多困难,有些已解决,有些未能解决。在完成任务途中,遇到必需但是难以解决的问题选择询问同学或是参考他人代码,在这一次的个人作业中,花费了大量时间,有时甚至感到烦躁,但是最终还是制作成可运行的小游戏,经过这次作业获得了一定成长。