这个作业属于哪个课程 | <班级圈子的链接> |
---|---|
这个作业要求在哪里 | <作业要求的链接> |
这个作业的目标 | 开发一个类似于“羊了个羊”风格的小游戏 |
学号 | 102202118 |
😻软件工程课程第二次个人作业:开发“🐾猫了个猫🐱”小游戏
🐱项目概述
本次作业旨在通过Python开发一款类似“羊了个羊”的消除类小游戏,利用Pygame库实现图形界面,
并借助GitHub Copilot等AIGC工具提升开发效率。项目不仅考验了编程技能,还涉及了界面设计、游戏逻辑、难度控制及与AIGC技术的结合。
😼游戏功能实现
👓界面设计
-
🍔主菜单:设计简洁明了的启动界面,包含开始游戏、难度选择。
-
👓游戏界面:使用Pygame绘制游戏面板,显示图案层叠效果,以及倒计时和分数显示。
-
🥨结束界面:游戏结束后显示结果界面,可以选择退出或重新开始若重新开始则可以回到游戏开始的界面。
🛠️游戏逻辑
- 😎开始与结束的页面选择:
玩家通过键盘输入,若输入e则进入简单模式,若输入h则进入困难模式;
游戏结束时,若输入r则重新进入游戏开始界面再次游戏,若输入q则退出游戏(无需区分英文字母的大小写) - 🧶图案生成与摆放:随机生成图案并按一定规则分层摆放,确保玩家可以通过点击匹配消除。
- ⌨️消除机制:玩家点击图案,若在收集筐中出现三个相同的方块,则消除掉,并清空篮筐中的相应位置
- 🥧倒计时:设置游戏时间限制,时间结束时若未通关则游戏失败。
- 🎮难度设置:通过预设不同关卡来增加挑战性,简单模式要消除的图案少,消除总次数也少,而困难模式则反之。
🙀代码要求与AIGC应用
- 代码生成:使用GitHub Copilot生成至少30%的代码,并在注释中明确标注。
- 代码质量:保持代码结构清晰,注重可读性和注释,确保易于理解和维护。
🥡 AIGC应用
- 代码补充:利用Copilot根据函数名、注释等自动补全代码。
- 学习风格:让Copilot学习个人编码习惯,提高代码生成效率。
- 算法与测试用例:辅助编写算法和测试用例,提高代码质量。
- 图片设计:结合第一次作业提到的文生图工具,辅助设计游戏内图案。
本次我给我的小游戏设计了一个简单的游戏界面,总体符合一个简单干净的主题
让人看起来赏心悦目(实际上是设计的花里胡哨出了太多bug)
😺 AIGC表格任务
子任务 | 借助AIGC技术 | 实现功能 | 效果如何? |
---|---|---|---|
游戏界面布局设计 | VS Code Copilot | 自动生成界面框架代码 | 高效,减少了重复布局代码编写时间 |
图案生成与消除算法 | kimi算法建议 | 实现图案随机生成与匹配消除逻辑 | 相对准确,提高了算法开发效率 |
倒计时与游戏状态管理 | Copilot补充控制逻辑 | 管理游戏时间、玩家状态及游戏结束判断 | 流畅,确保了游戏逻辑的完整性和稳定性 |
难度设置与关卡设计 | 手动设计结合Copilot建议 | 设计多样化的关卡和挑战性 | 多样化,提升了游戏可玩性 |
😾扩展功能
- 道具功能:目前还未设计完善各种功能😿,我会努力的!!!
- 难度模式:提供简单、困难两种难度模式,满足不同玩家需求。
- 分数系统与排行榜:记录玩家得分,激发玩家竞争欲望。
😽
🍦项目展示
- GitHub仓库链接:项目仓库链接
🫐 项目介绍
前端设计:详细介绍了游戏界面的布局、色彩搭配及交互设计。
界面布局:
1.游戏窗口尺寸:宽度为400像素,高度为760像素。
2.游戏区域:游戏的主要区域位于窗口的中心,由3x3的格子组成,每个格子大小为48x48像素,格子之间有48像素的间距。
3.得分和任务显示:在游戏区域的上方,有显示任务(Mission)和得分(Score)的文本。
4.时间显示:在得分下方,显示剩余时间(Time)。
5.游戏状态:游戏状态(如胜利、失败、介绍)会覆盖在游戏区域上方,显示相应的信息和提示。
色彩搭配:
1.背景色:游戏的背景色为白色(whiteColor)。
2.边框色:游戏区域的边框为黑色(blackColor),宽度为5像素。
3.文字颜色:默认文字颜色为黑色,任务指示文字为红色(redColor),得分和剩余时间的文字颜色为蓝色(blueColor)。
4.时间用尽:当时间用尽时,时间显示会变为红色。
5.图案颜色:图案颜色由加载的图片决定,图片被缩放至48x48像素。
交互设计:
1.开始游戏:玩家可以通过按'E'键选择简单模式或按'H'键选择困难模式开始游戏。
2.点击交互:玩家点击游戏区域中的图案,图案会根据游戏逻辑被选中或更换。
3.声音反馈:每次点击时,会播放点击音效。
4.游戏结束:当玩家达到目标分数或时间用尽时,游戏结束。玩家可以通过按'R'键重新开始或按'Q'键退出游戏。
5.胜利条件:当玩家连续翻开三个相同的图案时,会获得分数,当分数达到目标分数时,游戏胜利。
6.代码中的函数和类:
Point 类用于表示点击的位置。
draw_victory_screen、draw_intro_screen、draw_game_over_screen 函数用于绘制胜利、介绍和游戏结束的屏幕。
draw_border 函数用于绘制游戏区域的边框。
provide_feedback 函数用于播放点击音效。
main 函数是游戏的主循环,处理事件、更新游戏状态和绘制界面。
setup_game 函数用于初始化游戏数据。
handle_click 函数处理玩家的点击事件。
draw_game_state 函数用于绘制游戏的当前状态。
整体上,这个游戏的设计简洁明了,通过色彩和布局的合理搭配,以及直观的交互设计,为玩家提供了一个轻松愉快的游戏体验。
特色功能:突出了消除机制、倒计时、难度设置等核心功能及其实现思路。
消除机制
1.图案存储:使用二维数组 data 来存储每个格子的图案编号,使用一维数组 store 来存储玩家当前翻开的图案。
2.点击处理:在 handle_click 函数中,当玩家点击某个格子时,检查该格子是否已被翻开(即 store 数组中是否有对应的图案)。如果未翻开,则将该图案编号添加到 store 数组中。
3.匹配检查:每次点击后,检查 store 数组中的图案是否满足消除条件(即所有图案都相同且数量达到3个)。如果满足条件,则增加分数,并重置 store 数组。
4.图案更新:当一个图案被消除后,需要从 data 数组中随机选择新的图案填充空出的格子。
倒计时
1.时间初始化:在 main 函数中初始化 startTime 为当前时间戳,并设置 countdown 为游戏的总倒计时时间(如300秒)。
2.时间更新:在游戏主循环中,每次循环计算当前时间与 startTime 的差值,以此来更新剩余时间。
3.时间显示:在 draw_game_state 函数中,根据剩余时间更新屏幕上的时间显示。
4.时间结束处理:当时间耗尽时,通过设置 gameOver 变量为 True 来结束游戏,并显示游戏结束界面。
难度设置
1.难度选择:在 draw_intro_screen 函数中,玩家可以通过按 'E' 键选择简单模式或按 'H' 键选择困难模式。
2.难度参数:在 setup_game 函数中,根据选择的难度设置不同的目标分数(targetCount)和初始图案数量(itemCount)。简单模式的目标分数较低,图案数量较少;困难模式则相反。
3.游戏逻辑调整:难度的不同也会影响游戏的逻辑,如图案的刷新速度、消除的图案数量要求等
🥇测试
-
测试样例:以下展示多个测试用例及其测试结果,确保游戏功能的稳定性和正确性。
🍧 PSP表格
小任务 | 预估可利用AIGC | 实际中利用AIGC | AIGC技术优点 | AIGC技术缺点 | 适合应用方面 | 不适合实现功能 |
---|---|---|---|---|---|---|
游戏界面设计 | 是 | 否 | 快速生成原型,提高设计效率 | 可能缺乏个性化和创新性 | 快速原型设计,界面布局 | 深度定制化设计 |
色彩搭配 | 是 | 否 | 自动生成协调的色彩方案 | 可能不符合特定艺术风格 | 初步色彩方案设计 | 艺术创作,个性化色彩选择 |
音效生成 | 是 | 是(通过pygame.mixer 模块) |
快速生成音效,节省时间 | 音效可能缺乏独特性和情感表达 | 简单游戏音效生成 | 高质量音乐制作,复杂音效设计 |
游戏逻辑编码 | 否 | 否 | - | - | - | 需要复杂逻辑和算法实现的功能 |
难度设置逻辑 | 否 | 否 | - | - | - | 需要根据玩家行为动态调整的功能 |
消除机制算法 | 否 | 否 | - | - | - | 需要精确逻辑判断和算法优化的功能 |
文本内容生成 | 是 | 否 | 快速生成游戏内文本 | 文本可能缺乏创意和吸引力 | 游戏内指导文本,简单对话生成 | 复杂故事情节创作 |
游戏测试与优化 | 否 | 否 | - | - | - | 需要人工参与,基于玩家反馈进行优化 |
AIGC技术优点:
- 快速原型设计:AIGC技术可以快速生成游戏界面原型和色彩方案,加速开发流程。
- 节省时间和资源:自动生成音效和文本内容可以减少人工创作的时间和成本。
- 初步创意生成:为开发者提供初步的创意和灵感,作为进一步开发的起点。
AIGC技术缺点:
- 缺乏个性化:自动生成的内容可能缺乏独特性和创新性,难以满足特定艺术风格和个性化需求。
- 情感表达不足:自动生成的音效和文本可能缺乏情感深度和吸引力,难以引起玩家共鸣。
适合应用方面:
- 快速原型设计:在游戏开发的早期阶段,AIGC技术可以快速生成界面和色彩方案。
- 简单内容生成:对于不需要深度创意和个性化的游戏内容,如简单音效和指导文本,AIGC技术可以提供有效的支持。
不适合实现功能:
- 深度定制化设计:需要根据特定艺术风格和玩家反馈进行深度定制化的设计不适合使用AIGC技术。
- 复杂故事情节创作:需要丰富情感和创意的故事情节创作,AIGC技术难以达到预期效果。
- 需要精确逻辑判断和算法优化的功能:如游戏的核心逻辑和算法,AIGC技术难以提供精确和优化的解决方案。