1. 游戏介绍
1.1 游戏简介
游戏名为《秀了又秀》,参考了《羊了个羊》小游戏,是一款充满乐趣和挑战的策略消除游戏。
1.2 游戏玩法
- 消除挑战:将方块点击使其位于下方方框,当出现三个相同种类的方块即可消除,消除越多,得分越高;但是要注意,下方最多只能存在7个方块。
1.3 前端设计与特色功能
1.精美的画面:游戏采用可爱的动漫风格,冰雪风景,所有图片均有AI生成,经过后期微调。
2.简单的操作:只需简单的点击,即可享受游戏的乐趣。
3.背景音乐:游戏设置了欢快的游戏背景音乐,增加游戏体验。
4.游戏名设置:进入游戏,为自己设置一个响亮的名字吧。
5.增添时间限制:为游戏增加紧张刺激感,由于难度较大,时间设置为五分钟。
6.增添功能按键:增加了撤销按键以及restart按键,增加游戏体验。
7.分数排行榜机制:每成功点击一次为自己增加10分,同时每使用一次撤销键,扣除10分,最终排行榜依据总分数和所用时间进行排行。
1.4 技术实现
- 底层框架:使用Python进行实现,主体使用pygame框架,包括使用pygame完成图片的大小,以及音乐的播放。
- 游戏算法:游戏共有12类张牌,每类12张;程序将144张牌随机打乱,放入7层的金字塔结构中,并且金字塔的每层堆叠也增加了随机排放,增加不规律性,增大游戏趣味性,由于会产生额外的4张卡片,将其放置于牌堆下方。设置最上层的方块为可点击,其他下层方块状态为补课点击,并覆盖上阴影。
- 额外功能:游戏增加了撤销和重启功能,并且实现了和用户名绑定的排行榜,为实现游戏公平,撤销功能计入分数计算。
1.5 实现思路
1.初始化:游戏开始时,初始化Pygame库,设置屏幕大小,加载和调试卡牌图案以及背景图片的大小以匹配屏幕大小,并初始化牌组。
2.主游戏循环:游戏的主循环负责处理用户的输入、更新游戏状态、绘制界面并更新显示。
3.鼠标点击事件:当玩家点击牌堆中的牌时,则将其移动到底部的牌堆栈。检测到栈中有三张相同的课牌时,即可消除他们,并重新排列栈。
4.图案匹配:当检测到栈中有三张相同的课牌时,即可消除他们,并重新排列栈。
5.计时器:游戏开始时启动一个计时器,实时更新剩余时间,并在时间耗尽时结束游戏。
6.分数机制:每点击一次卡牌到下方牌堆,分数加10分,胜利后结算总分数,并更新排行榜。
7.功能性按键:在游戏界面上又撤销键和重启键,撤销键每次扣除10点分数,重启键这重新开始游戏。
8.游戏结算:当所有图案被消除时则显示游戏胜利,诺下方卡牌栈大于7张或时间耗尽时,则显示游戏结束界面。但是只有胜利完成游戏才会显示排行榜。
2.测试
2.1测试用例
测试用例 1:启动游戏
- 目的:验证游戏能否正常启动并显示初始页面。
- 步骤:运行程序。
- 预期结果:游戏窗口正常打开,显示初始页面,播放bgm音乐。
测试用例 2:输入用户名
- 目的:验证玩家能否正常输入用户名。
- 步骤:点击用户输入框。
- 预期结果:成功输入用户名,按enter键后成功进入游戏页面。
测试用例 3:查看排行榜功能
- 目的:验证能否正常查看排行榜。
- 步骤:点击排行榜,进入后点击返回。
- 预期结果:正常显示排行榜,进入后点击返回回到初始页面。
测试用例 4:卡牌生成
- 目的:验证游戏能否正确显示并堆叠卡牌。
- 步骤:进入游戏,观察图案。
- 预期结果:所有卡牌正常堆叠,并随机排放,并正确显示在位置上。
测试用例 5:卡牌点击
- 目的:验证卡牌被点击后能否正常运行。
- 步骤:点击上层卡牌和点击下层卡牌,以及四张额外卡牌,观察结果。
- 预期结果:上层卡牌和额外4张卡牌可以被点击,并成功进入下方牌栈中,而下层卡牌无法被点击。
测试用例 6:卡牌匹配
- 目的:验证牌栈中有三张相同卡牌时是否会进行消除。
- 步骤:陆续点击三张相同卡牌,观察牌栈中的变化。
- 预期结果:三张相同卡牌消除,牌栈重新排列。
测试用例 7:功能性按键
- 目的:验证功能性按键能否正常使用。
- 步骤:在游戏时,使用功能性按键,观察结果。
- 预期结果:使用撤销键,所点击卡牌回到原本的牌堆位置;使用重启键,卡牌初始化。
测试用例 8:游戏失败条件
- 目的:验证游戏在时间耗尽或牌栈超出7张时游戏失败。
- 步骤:分别触发失败条件。
- 预期结果:游戏结束,显示失败页面。
测试用例 9:游戏胜利条件
- 目的:验证玩家能否实现游戏胜利。
- 步骤:成功在游戏时间内消除所有卡牌。
- 预期结果:游戏结束,进入游戏胜利画面,显示排行榜信息。
2.2测试设计评价
- 全面性:测试用例覆盖了游戏的主要功能,包括启动、用户名输入、排行榜查看、卡牌点击、卡牌匹配,牌栈的限额、功能性按键使用、分数机制、游戏失败以及胜利条件。这些测试用例能够全面覆盖了游戏的基本功能。
- 有效性:测试用例针对了游戏的核心玩法和功能设计测试用例,确保了关键路径被测试。
- 可验证性:测试结果是可观察和可验证的,以便于测试人员能够明确判断功能是否正常。
- 错误揭示:能够揭示潜在的错误和问题,帮助开发者修复。
2.3讨论
- 当前的测试策略已经覆盖了游戏的核心功能和玩家交互。
- 尽管现有的测试用例已经相当全面,但仍有一些领域可以进一步增强测试的深度和广度:
- 异常输入测试:测试游戏在面对意料之外的用户行为时的鲁棒性。
- 性能测试:评估游戏在高负载条件下的性能,确保游戏在资源消耗(如CPU、内存)方面的表现符合预期。
3. 游戏展示
3.1 游戏流程
- 初始界面:用户名输入、查看排行榜。
- 游戏界面:在规定时间内完成游戏。
- 结算页面:游戏失败显示失败页面或者游戏成功显示胜利画面,并将所得分数和时间计入排行榜(排行榜只计入前10名)
3.2 初始页面
初始页面展示
用户名设置提示语和激活状态,当点击时才会进行用户名的输入,最后按回车键结束输出。
点击排行榜进行查看
3.3 游戏页面展示
点击方块开始游戏!
3.4游戏失败页面
游戏失败,火彩人跪地痛哭
3.5游戏胜利页面
4. AIGC表格
4.1AIGC表格任务
子任务 |
任务详情 |
预估是否使用AI |
实际情况 |
牌堆的堆叠逻辑 |
使用什么方法时牌堆进行堆叠 |
是 |
参考网上的开源代码 |
游戏规则设定 |
设计牌堆的堆栈和消除的规则 |
否 |
自行设计 |
游戏界面设计 |
设计简洁明了的游戏主界面,包括道具栏、得分显示等区域。 |
否 |
使用AI,整体实现,存在一些小问题,但不影响具体使用 |
游戏元素制作 |
设计各种图案的方块元素,使其具有辨识度和美观性。 |
是 |
使用AI,生成的元素比较随机,需要自己后期调整 |
道具设计 |
设计多种道具,如撤回一步、洗牌等,并设定其使用规则。 |
是 |
使用AI,整体,但存在一定的问题,做出意外动作时会出现BUG |
得分系统设计 |
建立合理的得分机制,根据消除的速度、步数等因素给予不同的分数。 |
是 |
与预估的有一定差异,但是仍然是一个合理的分数机制 |
4.2 AIGC生成学到的内容和体会
项目中学到的内容 |
心得体会 |
了解了游戏界面设计的重要性,如何布局能提升用户体验。 |
一个好的游戏界面可以吸引玩家,让他们更愿意投入时间去玩游戏。在设计过程中,需要不断考虑用户的操作习惯和视觉感受。 |
掌握了关卡设计的技巧,平衡难度与趣味性。 |
关卡设计是游戏的核心之一,难度过高会让玩家受挫,难度过低又会缺乏挑战。要不断调整和测试,找到最佳的平衡点。 |
学会了制作有特色的游戏元素,提升游戏的美观度。 |
精美的游戏元素能增加游戏的吸引力,同时也需要考虑其与整体游戏风格的协调性。 |
明确了消除规则的重要性以及如何制定清晰合理的规则。 |
规则是游戏的基础,必须简单易懂且具有逻辑性,这样玩家才能快速上手并享受游戏过程。 |
懂得了道具设计的思路,如何让道具既实用又不过于强大。 |
道具可以为游戏增加趣味性和策略性,但不能让道具破坏游戏的平衡性,要让玩家在使用道具时感到有成就感。 |
体会到音效在游戏中的作用,合适的音效能增强氛围。 |
音效可以让游戏更加生动,不同的音效可以反馈玩家的操作结果,营造出紧张或轻松的游戏氛围。 |
理解了得分系统设计的原则,激励玩家不断挑战。 |
得分系统可以激发玩家的竞争意识,让他们有目标地去玩游戏,同时也需要保证公平性。 |
感受到游戏测试的必要性,及时发现问题并改进。 |
游戏测试是保证游戏质量的关键环节,通过测试可以发现各种漏洞和不足之处,从而进行优化,为玩家提供更好的游戏体验。 |
4.3 PSP表格
任务描述 |
预估耗时(小时) |
实际耗时(小时) |
游戏界面设计 |
2 |
3 |
关卡设计 |
3 |
2 |
游戏元素制作 |
1 |
1.5 |
消除规则设定 |
2 |
1 |
道具设计 |
1 |
2 |
音效制作 |
0.1 |
0.1 |
得分系统设计 |
0.5 |
0.5 |
游戏测试 |
1 |
1 |
代码复查 |
0.5 |
05 |
5.新的体会
1.使用AIGC设计游戏的感想
- AIGC可以通过你给他的语言设计出代码,可以基本上实现你的要求,但是总会遗留一些问题存在,你说明的越详细,它设计的越完善。
- 完成越复杂的问题,它犯的错就越多。
- 你可以根据它给你代码的问题所在提出问题,并用你的思路进行更改,它可以很好的解决。
- 但是如果你用相同的话语和他沟通,而且没有指出问题所在,它有可能会相同的错误一错再错。
2.总结
- 使用AIGC设计代码可以减少很多工作量,但是我们现在还无法完全依赖它。
- 但是如果你有很好的代码基础,给他完善的指令,把你的思路传达给他,或者明确指出它的错误,它会给你很好的反馈,达到更好的体验效果
- AI很好用,但是如果你有知识基础就更好用!