软件工程第二次作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 使用Python编写一个“羊了个羊”风格的消除类小游戏 |
学号 | 102202145 |
😺1. 项目介绍
1.1 项目背景
随着移动游戏和休闲游戏的流行,各种风格独特、简单易玩的小游戏获得了广泛关注。本次作业的目标是设计并实现一个“喵了个喵”风格的消除类小游戏,旨在通过实践提高对游戏开发流程的理解,并掌握Pygame库的使用。
1.2 游戏玩法概述
游戏的核心玩法是图标消除。玩家通过点击屏幕上的图标,将图标加入底部方框中。如果底部方框中有三个或更多相同的图标,就会触发消除,并获得相应的分数。游戏采用倒计时机制,倒计时结束即为游戏失败。玩家可以通过点击“暂停”按钮来暂停或继续游戏。游戏分为简单模式和困难模式,模式选择会影响图标的种类和出现频率。
-
玩家操作方式:
- 点击屏幕上的图标进行选择。
- 点击“暂停”按钮可以暂停游戏,重新点击则继续游戏。
- 点击空白处可以重新开始游戏。
-
图案匹配消除的逻辑:
- 底部方框中最多显示5个图标。
- 若底部方框中有三个或更多相同的图标,则这些图标会被消除,并增加分数。
-
倒计时机制:
- 游戏开始时设置60秒倒计时,倒计时结束游戏失败。
- 倒计时显示在游戏界面的左上角。
1.3 项目技术栈
- 编程语言:Python
- 游戏开发框架:Pygame
- 代码生成工具:GitHub Copilot
- 音频处理:Pygame内置的音频模块
- 图形资源:本地图片资源(如按钮、背景、图标等)
- 版本控制:Git(用于代码版本管理)
1.4 项目结构
项目代码主要分为以下几个部分:
-
初始化与设置:加载游戏窗口、音效、背景图像和图标等资源。
-
模式选择:实现游戏模式(简单或困难)的选择,并初始化游戏中的图标和层次。
-
游戏逻辑:包含核心玩法:
- 处理玩家点击,更新底部方框中的图标。
- 检查图标匹配、游戏胜负条件,以及底部方框是否满足消除或失败条件。
-
界面绘制:负责绘制游戏画面,包括图标层、底部方框、得分和暂停按钮等。
-
游戏结束处理:显示游戏结束时的画面,包括胜利和失败界面。
-
主菜单与设置:实现主菜单界面,包括开始游戏、设置、商店、进入游戏界面等功能。
🥳 2. 游戏功能实现
2.1 界面设计
- 主菜单:
点击开始游戏后:
默认就是简单模式,点击进入喵群后就可以进入游戏。 - 游戏界面:
简单模式:六个图案,重叠层数少
困难模式 :十个图案,重叠层数多
- 结束界面:
成功页面:
失败页面:
2.2 游戏逻辑
-
图案生成与摆放:使用
get_patterns()
函数生成游戏图标,按照不同难度随机摆放在多个层中,确保图标不会出现在底部方框区域。 -
图案匹配消除:通过
check_match()
函数检测底部方框中是否有三个相同的图标。如果有,则触发消除效果、增加得分,并播放消除音效。 -
底部方框与暂停机制:
draw_bottom_box()
函数负责绘制底部方框,玩家点击图标后将其添加到底部方框。点击“暂停”按钮可以切换游戏的暂停和继续状态,暂停期间无法进行其他操作。
2.3 难度设置
- 难度设置:游戏提供了简单模式和困难模式。简单模式使用前6个图标,困难模式使用所有图标。难度设置通过
select_mode()
函数来选择,影响图标的数量和层数。困难模式下,增加图标层数,使游戏更具挑战性。
2.4 扩展功能
- 道具和分数系统:游戏中没有额外道具,但通过消除图标来增加分数。每成功消除三个相同的图标,玩家将获得30分。游戏还实现了分数显示功能,通过
draw_score()
函数实时显示当前得分。 - 多难度模式:游戏支持简单和困难两个模式。模式选择通过
select_mode()
函数实现,并根据模式调整图标生成数量和层数。 - 点击设置后:
点击游戏说明:
点击商店:
- 游戏音效:
视频无法上传/制作了背景音乐,点击音效,消除音效
游戏画面展示:
🌈 3. 结合AIGC
-
3.1 AIGC工具的使用
在本项目中,我使用了GitHub Copilot和ChatGPT这两种AIGC工具。GitHub Copilot帮助自动生成了部分代码片段,提高了开发效率,尤其是在编写游戏逻辑和界面设计时。ChatGPT则在游戏叠放逻辑的生成过程中提供了建议和示例,帮助完善了游戏的层级和图案匹配机制。 -
3.2 AIGC表格
子任务 AIGC工具 辅助功能 效果 游戏叠放逻辑 ChatGPT 生成图案叠放和随机分布的逻辑 提升了图案分布的随机性和复杂度 界面设计 GitHub Copilot 自动生成界面元素的布局代码 加快了界面布局的开发速度 游戏逻辑 GitHub Copilot 生成图案匹配和消除的逻辑代码 减少了代码编写的重复性 暂停和重启机制 GitHub Copilot 代码模板生成和逻辑实现 提高了游戏状态切换的准确性 -
3.3 实际应用分析
在本项目中,ChatGPT帮助生成了游戏叠放逻辑,这部分代码涉及到图案的层级管理和匹配消除的实现。具体来说,ChatGPT提供了一个图案叠放的实现思路,并生成了部分代码示例。这使得游戏中图案的随机分布变得更加合理和有趣。
💫 4. 测试
-
4.1 测试用例设计
为了确保游戏顺利运行,我设计了一些简单的测试用例,过程就像在试玩游戏一样:-
主菜单按钮测试
- 测试内容:看看主菜单上的“开始游戏”、“设置”、“退出”按钮能不能正常工作。
- 测试步骤:
- 启动游戏,进入主菜单。
- 点击“开始游戏”按钮,看看能否顺利进入游戏页面。
- 点击“设置”按钮,确认是否进入设置界面。
- 点击“退出”按钮,游戏是否正常退出。
- 期望结果:按钮都能乖乖地切换到对应的页面或退出游戏。
-
游戏逻辑测试
- 测试内容:测试图案生成、匹配消除、底部方框逻辑,以及暂停和重启功能。
- 测试步骤:
- 开始游戏,看看图案生成得是否正确。
- 尝试匹配三个相同的图案,验证能不能顺利消除。
- 填满底部方框,看看是否符合游戏失败的规则。
- 按下暂停按钮,确认倒计时停止,并且按钮变成“开始”。
- 点击“开始”,看看游戏状态是否恢复正常。
- 游戏失败时,看看提示信息是否显示正确。
- 期望结果:游戏逻辑正常运作,图案匹配和消除符合规则,暂停和重启功能都能顺利切换。
-
难度设置测试
- 测试内容:不同难度模式会不会影响图案的生成和布局。
- 测试步骤:
- 选择不同的难度模式(比如简单模式)。
- 开始游戏,观察图案的生成和布局是否符合设置。
- 期望结果:不同难度下的图案生成要符合预期,比如简单模式下的图案更友好一些。
-
UI测试
- 测试内容:界面元素的位置、透明度,看看符不符合设计要求。
- 测试步骤:
- 检查游戏界面中的按钮位置和透明度。
- 确保底部方框不会遮挡图案,并且最多显示5个图案。
- 期望结果:界面元素按照设计要求显示,界面整洁,确保用户体验棒棒的。
-
-
4.2 测试结果
根据测试的情况,总结一下结果:- 主菜单按钮测试:所有按钮都按预期工作,界面切换非常流畅。
- 游戏逻辑测试:图案生成和匹配消除都正常,底部方框逻辑也没问题,暂停和重启机制顺利运作,游戏失败提示很准确。
- 难度设置测试:不同难度模式的图案生成符合预期,简单模式的布局更合理。
- UI测试:界面元素的位置和透明度都符合设计要求,底部方框不会遮挡图案,整个界面看上去非常整洁,用户体验不错!
总结:游戏功能运行稳定,各种测试用例都通过啦!界面设计和用户体验也符合预期,确保了游戏的趣味性和可玩性。
🌟5. PSP表格
-
5.1 PSP表格记录
任务 预估耗时 实际耗时 备注 项目规划 2小时 3小时 磨洋工/完成项目整体规划和设计思路 界面设计 3小时 3小时 设计并实现主菜单、游戏界面和结束界面 游戏逻辑实现 1小时 1.5小时 实现图案生成、匹配消除逻辑等 难度设置 2小时 2.5小时 实现不同难度模式的图案生成 扩展功能实现 2小时 2.5小时 实现额外的功能(如道具系统,排行榜) AIGC工具应用 1小时 2小时 使用AIGC工具辅助代码生成 测试与调试 2小时 1小时 进行功能测试和调试 撰写报告 2小时 1.5小时 完成项目报告撰写 - 改进建议:在项目规划阶段可以更详细地制定每个任务的具体细节,以便更准确地预估时间。此外,难度设置和扩展功能的实现时间可以提前留出更多的余地,以防意外的技术问题。
🎉6. 学习心得
-
6.1 项目收获
在这次项目开发中,我真的学到了很多新东西,也积累了不少宝贵的经验:
- 游戏开发技巧:从设计到实现,我更深入地了解了如何用Pygame进行游戏开发,包括界面设计、游戏逻辑和用户交互等。这个过程让我对游戏开发的整个流程有了更直观的认识。
- 项目管理:通过分解任务、合理安排时间,我提升了对项目整体的掌控能力。原来在实际开发中,合理分配时间和资源是多么重要!
- 解决问题的能力:在开发中遇到了各种难题,比如图案匹配和暂停机制。解决这些问题的过程,不仅锻炼了我的能力,也让我更好地学会了如何利用工具和资源。
-
6.2 AIGC体验
使用AIGC工具(像GitHub Copilot和ChatGPT)真的帮了我大忙!
- 使用效果:这些工具在生成代码和解决问题方面非常高效,特别是在实现游戏逻辑和生成图案时,节省了我不少时间和精力。
- 效率提升:借助AIGC工具,我可以快速找到代码片段和解决方案,让开发过程更顺利,也大大提高了编程效率。
- 体验感受:整体体验非常好!AIGC工具就像贴心的助手,提供了很大的帮助。不过,在一些复杂逻辑或特定需求方面,还是需要我自己多动脑筋、细心调试,才能确保代码最终符合我的想法。
🐾7. 项目展示
- 7.1 GitHub 仓库链接
提供项目代码的GitHub仓库链接:https://github.com/xingheer/practice - 7.2 项目截图
🧩 8. 总结
-
8.1 完成情况
本项目的小游戏“喵了个喵”已按计划完成,主要功能包括:
- 主菜单:提供了“开始游戏”、“设置”和“退出”按钮,设计了用户友好的界面。
- 游戏界面:实现了图案生成、图案匹配消除、倒计时机制等核心游戏逻辑。
- 结束界面:设计了游戏成功和失败页面,并实现了相应的提示和重新开始功能。
- 难度设置:提供了简单和困难模式,虽然困难模式暂时未实现,但简单模式下的游戏逻辑已完善。
- 暂停和重启机制:确保了游戏在暂停期间无法操作,且能够正确切换游戏状态。
遇到的挑战:
- 图案匹配逻辑:图案匹配的实现需要精确控制底部方框的图案消除逻辑,这在实现时遇到了一些复杂的逻辑问题。
- AIGC工具的应用:虽然AIGC工具极大地提高了开发效率,但在使用过程中也需要对生成的代码进行仔细的检查和调整,以确保功能的正确性。
-
8.2 展望
若有更多时间,可以考虑对游戏进行以下改进或扩展: -
好友对战:引入好友对战功能,让玩家可以实时匹配好友进行消除比拼,增加游戏的互动性和趣味性。
-
排行榜:添加全服排行榜和好友排行榜,激发玩家的竞争欲望,提供动力不断挑战更高分数。
-
总积分系统:引入积分累积机制,记录玩家的每次游戏成绩,并根据总积分给予一定的称号或奖励,提升游戏的长久吸引力。
-
困难模式实现:进一步开发困难模式,包括更复杂的图案生成规则和难度增加机制。
-
扩展功能:增加更多的道具和分数系统,为游戏增加更多的互动性和挑战性。
-
用户体验优化:完善游戏的界面设计和用户体验,如增加背景音乐和音效,提升整体的游戏体验。
-
多平台支持:考虑将游戏移植到更多平台,如移动设备或Web,扩展游戏的受众群体。
🐱🐱🐱附录
使用AIGC工具生成一个表格,记录在项目中学到的内容及心得体会。
- AIGC表格
学到的内容 | 具体应用 | 心得体会 |
---|---|---|
Pygame库的使用 | 使用Pygame开发游戏界面和逻辑 | Pygame提供了丰富的功能,能够快速实现2D游戏的各种需求,包括图形绘制、音效处理和用户输入。掌握Pygame的使用能够显著提高游戏开发效率。 |
图案匹配算法 | 实现了图标匹配和消除逻辑 | 图案匹配算法需要精确处理数据,确保消除条件的准确性。通过实现匹配算法,我学到了如何设计和优化复杂的逻辑。 |
倒计时机制 | 实现了游戏的倒计时功能 | 倒计时机制对游戏的紧张感和挑战性有很大影响。学会了如何管理和显示倒计时,以及如何在时间结束时处理游戏逻辑。 |
暂停与重启功能 | 实现了游戏的暂停和重启功能 | 实现暂停和重启功能涉及到状态管理和事件处理,学会了如何确保游戏在暂停和恢复时状态的一致性。 |
AIGC工具的应用 | 使用GitHub Copilot和ChatGPT生成代码和建议 | AIGC工具可以显著提高代码生成效率,特别是在编写重复性代码和设计方面。需要注意生成代码的质量,确保其符合项目需求。 |
游戏设计 | 主菜单、游戏界面和结束界面的设计 | 设计游戏界面需要考虑用户体验和视觉效果。通过设计主菜单和游戏界面,我学会了如何组织和优化游戏界面的布局。 |
代码调试与优化 | 解决了代码中的错误并优化了性能 | 调试和优化代码是开发过程中重要的一部分。通过调试和优化,我提高了问题解决能力,并学到了如何使代码更加高效。 |
**AIGC工具的效果**:
- **优点**:AIGC工具极大地提高了代码生成效率,特别是在复杂逻辑和设计建议方面,能够快速提供符合需求的解决方案。
- **缺点**:生成的代码需要仔细检查和调整,以确保符合项目需求,并解决可能存在的潜在问题。
- **适用场景**:适合用于生成重复性高的代码片段和提供设计建议,对于复杂的逻辑实现和具体功能开发仍需依赖开发者的思考和调试。