软件工程课程第二次个人作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 查看作业要求 |
这个作业的目标 | 开发一个类似羊了个羊消消乐小游戏~ |
学号 | 102202141 |
我的谷歌邮箱 fufubuff@gmail.com
我的github链接 https://github.com/fufubuff
我的博客园链接 https://www.cnblogs.com/fufubufff
😊😊😊fufubuff是全网唯一ID马甲,其他的不承认。
😊😊😊我的博客有点击特效,还可以开关灯(右上角有一个小案件),有兴趣的小伙伴可以玩。
本次作业的源码和所需的素材文件 https://github.com/fufubuff/software_homework_2
这里仅作部分最终版本代码展示(因为全部的放不下)和游戏实机展示,还有游戏介绍。
一,环境与工具准备
给我的python环境安装pygame
Pygame是一个用于开发游戏的库,可以帮助人快速完成游戏界面和逻辑的开发。
下载github copilot
安装代码辅助软件
在接下来的操作里可能用这个github copilot也有可能用GPT4等AIGC的工作
因为我是openai尊贵的包月会员,所以我一般是享受oepnai的付费服务来进行AIGC。他写基础功能代码的工作还是可以的。
openai他这两天新出那个o1-preview的新版本gpt的话比较适合拿来论文写作,推理功能是真的很强大。
主要的代码还是python和pygame包的运用,还有各层逻辑的组织和函数功能的编写,还有游戏的启动循环关卡迭代,这个也是我游戏的主要核心部分,就是各个循环的相互嵌套和启动。
二,关于软件设计需求分析和逻辑组织
游戏整体逻辑框图
🎮 游戏介绍(一个简短的俏皮引入)
🌟 游戏名称:《fu了个fu》
欢迎来到《fu了个fu》的世界!这是一个二次元像素风小游戏!这是一个富有创意的益智游戏,邀请玩家在多样化的关卡中进行挑战,使用策略和速度解决谜题,适合所有年龄层的玩家。
📜 游戏规则
- 游戏中,玩家需要操作不同的图块进行匹配和消除。
- 随着玩家的进步,关卡难度将逐渐增加,游戏时间逐步减少,游戏通过分数要求逐渐增加。
- 特殊的图块例如冰冻图块需要特定的操作来解冻和消除。
- 排行榜记会记录你的最优的5次游戏成绩,请你加油噢
🛒 商城功能
- 在游戏内的商城中,玩家可以通过现实货币购买游戏服务,如时间延长、特殊能力或直接通关服务。
🏆 拓展功能
- 有冰冻系统,冰住一些图块
- 排行榜功能,可以记录你的游戏成绩
- 有着丰富的消除特效和点击音乐,游戏富有动态体验感
🎨 游戏特色
- 丰富多彩的图块:游戏中的图块设计多样,每种图块都有其独特的视觉和功能。
- 引人入胜的关卡设计:每个关卡都设计有独特的挑战,激励玩家发挥最大潜力。
⚙️ 如何开始
1. 下载并安装《fu了个fu》。
2. 打开游戏并通过简介教程了解基本操作。
3. 开始你的关卡挑战,享受游戏带来的乐趣!
我们希望《fu了个fu》能提供一个既有挑战又有趣的游戏体验。快来加入这个充满乐趣和挑战的世界吧!🚀
我相比其他同学的优势就是我的游戏页面非常地可爱,美观性很高(自认为)
三,游戏整体界面动态和静态展示
因为博客园jpg格式的图片大小限制在只能放10mb的,所以这里对时长和画质大小做了压缩请老师助教见谅。
动态实机演示
-游戏启动
-游戏超时,游戏一开始的设置是240s,随着关卡的递增出现冰块图块和时间随关卡递减20s
-游戏失败,盘子的容量为5,一旦盘子里的候选匹配方块大于等于5个不能腾出空位就算作游戏失败
-游戏达到通关要求之后出现level-up界面,表示进入下一关。这里我自己给自己降低了难度调节成分数等于10分过关,为了演示升级界面。
-游戏通完新手关卡之后引入冰块小图块机制,要求更高,要先三个解冻然后会变成未冻住状态回到原地(这个回到原地的代码写了超级久,一直出bug)
游戏素材展示
-这里的图都是我自己去免费网上找的然后扣成透明底,然后那个冰块也是我自己P的加GPT生成,有部分GPT生成,不会侵权
-有三个连一起触发的音效和背景音乐
主打一个像素风
一些静态界面
开始界面
-这里设置了主菜单,分别是开始游戏和设置还有商店。
-商店可以购买付费服务,也就是我本人亲自为你提供服务,也设置了返回的按钮可以回到主菜单
-**设置这里可以调节音量还有图像
-**点击这里可以看见游戏记录和排行榜
点击start按钮,游戏进入开始程序,新手指引和规则介绍
按一下继续,然后就到了第一关的页面,第一关就是普通的消消乐,有倒计时和分数,三个连在一起算是消除
点击小图标会摆放到盘子里,三个在一起会消除,必须全部消除完才算胜利
冰块系统,要重复消一次,每次数量随机生成,关卡越到后面冰块覆盖面积越高
不慎盘子容量满了就会出现game over的界面,然后可以返回到主页面,重新开始游戏
如果超时游戏还没有结束就会弹出界面显示超时
恭喜你!成功通过了这一关,请点击NEXT确认进入下一关吧!
四,代码功能展示(主要代码文件+运行指南)
主要代码文件
-整个python代码包一共有4个文件,menu.py,main.py,game.py,setting.py
main.py就是游戏驱动启动程序。点击运行这个文件我的游戏就可以一键启动
game.py,这个是游戏核心功能的实现,我搞了很多个函数,这里拿几个重点的展示,具体详细看我源码。
-对于点击功能的处理
-这个是图块被消掉时动画的代码,调bug也调了很久
本来想搞那种效果,就是渐渐渐渐地透明,但是能力不足,最后只能搞平移
menu.py的代码部分展示
-这里主要是主菜单的构建,还有商店以及设置键和页面的导入
settings.py就是一些颜色大小参数的固定和引入
代码使用说明
在我的github上把整个代码包下载下来配置好python3.8和pygame包,直接运行main文件,整个游戏就可以启动,记得带耳机,因为我有设置游戏音效
五,AIGC工具的使用和感受
AIGC使用表格
子任务 | 借助何种AIGC技术 | 实现了什么功能 | 效果如何 |
---|---|---|---|
游戏主菜单和返回功能开发 | 通过询问 ChatGPT 获取指导 | 在游戏中实现了主菜单显示和返回功能 | 功能成功实现,主菜单可用 |
主菜单中 Start Game 功能完善 | ChatGPT 代码优化建议 | 修复了点击 "Start" 后直接显示超时页面的问题 | 正常跳转到游戏规则页面 |
等待返回主菜单功能 | ChatGPT 指导使用函数优化 | 使用 wait_for_menu_click 等待用户操作后返回主菜单 |
功能成功,实现预期效果 |
个人使用感受
- 使用 AI 类似 GPT 这样的大型语言模型,经常会遇到它们在对话中重置或出现错误的情况。像 GPT 这样的模型在每次对话后都会重置,连续对话中可能会出现错误或“傻掉”的情况。
- 直接向 AI 抛出复杂的需求,如要求它完整地帮助编写一个功能复杂的游戏,目前的技术还做不到。AI 在这方面的功能更像是一个智能搜索引擎,能提供一些基本的代码框架或结构建议。
- 在实际使用中,AI 有时候处理问题的逻辑会出现问题,需要用户重新启动会话或更改提问的方式才能得到正确的回答。例如,在处理游戏中图块选择的功能时,如果逻辑表述不清晰,AI 可能会反复错误,直到我调整描述或者直接重开
AIGC 的优缺点
优点
- 作为智能搜索引擎:在代码结构和架构组织的问题上,AI 能提供一些基本的框架和建议,尤其对于不熟悉这些方面的用户,这是非常有帮助的。
- 辅助思考和验证:在某些情况下,AI 能帮助用户通过提供不同的解决方案来验证和扩展用户的思路。
缺点
- 局限性:AI 在理解复杂的需求和逻辑时存在局限,特别是在涉及大量代码和复杂功能时,AI 的帮助有限,不能完全替代人工编程。
- 错误和漏洞:AI 经常会出现逻辑错误和漏洞,特别是在连续对话或复杂问题解答时。用户需要有清晰的逻辑结构和深入理解,不能完全依赖 AI。
- 代码质量问题:GPT 模型在处理大量代码时可能会偷懒、漏写代码,或者生成的代码质量不高,需要用户进行大量的检查和修正。
六,个人软件过程(PSP)报告
PSP 表格
阶段 | 任务描述 | 预计耗时(小时) | 实际耗时(小时) |
---|---|---|---|
计划 | - 需求分析 - 设计游戏规则 |
2 | 2 |
开发 | - 核心功能实现 - 点击框的设置 - 消除动画 - 冰块的设置 - 游戏逻辑难度的增加 |
6 | 9 |
测试 | - 单元测试 - 界面测试 |
2 | 3 |
文档 | - 制作作业展示gif - 编写项目报告 |
1.5 | 1 |
总计 | 13.5 | 15 |
七,本次作业总结和个人小游戏开发体验
我交的很快,基本上作业发布两三天就完成了,完成态度可以说是积极,希望看在我态度积极的份上能够酌情给我加两分,作业一出来我就想着我中秋节前一定要完成这样我中秋才能过一个好节,中秋节确实过得很开心,一个优秀的程序员真的需要劳逸结合才能保持心态的乐观积极向上,我回来写这段个人体验已经是中秋节当天9.17。
我的好朋友9.16给我发消息说我的半成品作业因为交的早被视奸到了我们班级的热门榜第二,一觉醒来天塌了,我非常地惶恐和受宠若惊,赶紧回来精修一下这个太具个人风格的作业。
因为今天是中秋节,在我书写我的个人感受前,祝助教和老师中秋快乐,也不知道你们看我的作业还算不算中秋,那就祝你们国庆快乐。
这也是我第一次做小游戏,之前很少接触这一块的开发,我只知道玩游戏,但是其实一些底层逻辑细究真的需要花费很多精力,比如说消消乐这种简单的三消一的(核心功能)实现都花了我两三天,可见我的coding和经验还需要继续增强。
然后代码的稳健性(我不知道是不是这么形容)也很重要,因为有的时候你的游戏有bug比如说一个界面出一直卡在那里肯定是你某个循环的逻辑没有写对或者某些模块有些功能上的冲突,这些困难在功能不断增加的时候会显现得更加明显,所以更是需要注意。就是代码越大你的bug越不好早。
游戏的功能必须从最简单的开始搭起,也千万不能一开始就搞那种万丈高楼平地起,真的很不现实,就是要不断完善不断细化,就比如说我是先设计主菜单然后设计核心功能才去完成一些分菜单的设计还有那个冰冻小方块,还有随着关卡增加时间如何减少,冰块概率如何增加。可能我们P(mbti)人从事这种工作思维就是比较发散,所以我的思考都是从一个点出发类似那种蛛网一样发散出去
一个好的ui界面也很重要,一开始我的游戏风格就是各个图层的画风不是很统一,后面我统一换成了像素风,就好看多了,看上去也没有那么的廉价。
9.18号更新,喜报,也是当上榜一了,如果我的作业能够在ddl前给大家带来一点启发或者说帮助是我的荣幸,很高兴,我的游戏代码还有很多不足,请助教老师多多包容