软件工程第二次个人作业
这个作业属于哪个课程 | 首页 - 软件工程2024 - 福州大学 - 班级博客 - 博客园 |
---|---|
这个作业要求在哪里 | 2024秋软件工程个人作业(第二次) - 作业 - 软件工程2024 - 班级博客 - 博客园 |
这个作业的目标 | 使用Python编写一个“羊了个羊”风格的消除类小游戏 |
学号 | 102202130 |
🍃项目代码已上传至GitHub仓库:github仓库地址
1.环境配置与工具准备🌱
1.1下载pygame
1.2 VScode配置github copilot
1.3用到的AIGC
本次作业用到豆包、craiyon、kimi
使用豆包生成背景图和加时图标
使用craiyon生成卡通动物图标
使用Kimi编写代码
2.需求分析
2.1游戏特色✨
- 简洁的图形界面:使用Pygame库创建直观的用户界面。
- 多模式选择:设置简单模式和困难模式,困难模式三消,增加了图案数量,提高游戏难度。
- 时间限制:设置倒计时,增加游戏的紧张感。
- 加时道具:玩家可以通过点击加时道具来增加额外的游戏时间。
🔈加时道具每局只能加一次,且只会加五秒,一定要在时间为0前点击,希望不用用上也能通关成功哦!
2.2游戏玩法💛
- 玩家通过点击图案选择图案。
- 当选中的图案达到两个或三个时,这些图案将被消除,玩家获得分数。
- 游戏在限定时间内结束,玩家需要在时间耗尽前尽可能获得更多分数。
🔈 限定时间原本设为100秒,发现时间还会剩下很多,最终调整为30秒,一不留神时间就不够了。
2.3界面设计☀️
- 主菜单:包含“简单模式”、“困难模式”和“退出游戏”按钮。
- 游戏界面:显示图案网格、倒计时和道具。
- 结束界面:显示得分、“重新开始”和“返回主菜单”按钮。
2.4技术实现🍃
- 使用Python语言和Pygame库进行游戏开发。
- 图像资源通过Pygame加载和缩放。
- 游戏逻辑包括图案生成、事件处理和得分计算。
2.5游戏流程🌕
- 启动游戏:玩家启动游戏并进入主菜单。
- 选择难度:玩家选择简单或困难模式开始游戏。
- 游戏进行:玩家在限定时间内点击消除图案,使用加时道具。
- 游戏结束:时间耗尽或图案消除完毕,显示得分和结束界面。
- 结束界面:玩家选择“重新开始”或“返回主菜单”。
2.6代码结构📚
Start
类:处理主菜单的显示和用户输入。Game
类:管理游戏逻辑和游戏界面的更新。End
类:处理游戏结束界面的显示和用户输入。
3游戏界面及美术展示
3.1静态界面🍀
主菜单界面🌻
游戏界面
成功通关界面
失败界面
3.2 AIGC生成美术展示
🎨使用豆包和Craiyon生成
4.博客要求☁️
4.1项目介绍
这是一个使用Pygame库编写的简单匹配游戏。玩家需要在限定时间内,通过点击来选择并匹配相同的动物图案,达到消除并获得分数的目的。游戏有两种难度模式:简单模式和困难模式。简单模式下,两个相同的图案即可消除并获得分数;困难模式下,需要三个相同的图案才能消除并获得分数。
前端设计与特色功能:
- 图形用户界面(GUI):游戏使用Pygame库创建图形界面,包括开始菜单、游戏界面和结束界面。
- 动画和视觉效果:游戏中的动物图案和背景图片通过Pygame进行渲染和动画处理,增加了游戏的视觉效果。
- 计时器:游戏有一个倒计时功能,玩家需要在时间耗尽前尽可能多地消除图案。
- 加时道具:游戏中包含一个加时道具,玩家可以在关键时刻使用它来增加游戏时间。
- 难度选择:玩家可以在开始游戏前选择简单模式或困难模式,适应不同玩家的需求。
- 得分系统:根据玩家消除的图案数量计算得分,并在游戏结束时显示最终得分。
使用的技术和算法:
- Pygame库:用于创建游戏的图形界面和处理用户输入。
- 事件驱动编程:游戏循环通过监听事件(如鼠标点击)来响应玩家操作。
- 随机数生成:使用Python的
random
模块来随机生成动物图案的位置。 - 图像处理:使用Pygame的图像处理功能来加载、缩放和渲染动物图案和背景图片。
- 计时和时间管理:使用
time
模块来管理游戏的倒计时和加时道具的效果。
实现思路:
- 初始化:游戏开始时,初始化Pygame库,设置屏幕大小,加载和缩放动物图案以及背景图片。
- 主游戏循环:游戏的主循环负责处理用户输入、更新游戏状态、绘制界面并更新显示。
- 图案生成:通过
generate_tiles
函数随机生成成对的动物图案,并在游戏区域内随机分布。 - 图案匹配:在用户点击时,检查是否有两个(简单模式)或三个(困难模式)相同的图案被选中,如果是,则消除这些图案并更新得分。
- 计时器:游戏开始时启动一个计时器,实时更新剩余时间,并在时间耗尽时结束游戏。
- 加时道具:在游戏界面上显示加时道具图标,当玩家点击且道具可用时,增加游戏时间。
- 游戏结束:当所有图案被消除或时间耗尽时,显示游戏结束界面,并显示最终得分。
图表展示:
[开始游戏]
|
V
[选择难度模式] --> [进入游戏界面]
|
V
[游戏主循环]
|----> [处理用户输入]
|----> [更新游戏状态]
|----> [绘制游戏界面]
|----> [检查游戏结束条件]
|
V
[显示游戏结束界面] --> [显示得分] --> [选择重新开始或退出]
4.2展示测试结果
测试
测试用例
- 测试用例 1:启动游戏
- 目的:验证游戏能否正常启动并显示主菜单。
- 步骤:运行游戏。
- 预期结果:游戏窗口打开,显示主菜单界面。
- 测试用例 2:选择难度模式
- 目的:验证玩家能否选择游戏难度。
- 步骤:点击简单模式或困难模式按钮。
- 预期结果:游戏开始,难度设置为所选模式。
- 测试用例 3:图案生成
- 目的:验证游戏能否正确生成并显示动物图案。
- 步骤:开始游戏,观察图案。
- 预期结果:所有动物图案正确生成并随机分布在游戏区域内。
- 测试用例 4:图案匹配(简单模式)
- 目的:验证简单模式下两个相同图案能否正确消除。
- 步骤:在简单模式下,选择两个相同的图案。
- 预期结果:选中的图案消除,得分增加。
- 测试用例 5:图案匹配(困难模式)
- 目的:验证困难模式下三个相同图案能否正确消除。
- 步骤:在困难模式下,选择三个相同的图案。
- 预期结果:选中的图案消除,得分增加。
- 测试用例 6:加时道具使用
- 目的:验证加时道具能否正确增加游戏时间。
- 步骤:在游戏时间内点击加时道具。
- 预期结果:游戏时间增加5秒,加时道具变为不可用状态。
- 测试用例 7:游戏结束条件
- 目的:验证游戏在时间耗尽或图案消除完时能否正确结束。
- 步骤:等待时间耗尽或消除所有图案。
- 预期结果:游戏结束,显示得分和结束界面。
- 测试用例 8:重新开始或退出
- 目的:验证玩家能否在游戏结束后选择重新开始或返回主菜单。
- 步骤:在游戏结束后点击重新开始或返回主菜单。
- 预期结果:游戏重新开始或进入主菜单界面。
测试设计评价
- 全面性:测试用例覆盖了游戏的主要功能,包括启动、难度选择、图案生成、图案匹配、加时道具使用、游戏结束条件以及重新开始或退出。这些测试用例能够全面评估游戏的基本功能。
- 有效性:测试用例设计有效,能够验证游戏的关键功能是否按预期工作。例如,通过图案匹配测试用例可以验证游戏的核心玩法是否正确。
- 可维护性:测试用例清晰且易于理解,便于在游戏更新或修改后进行重新测试。
- 可扩展性:测试用例可以根据游戏的更新和新增功能进行扩展,例如添加新的难度模式或新的游戏道具。
讨论
测试用例基本上满足了程序测试需求,能够验证游戏的主要功能和玩家交互。然而,还可以进一步增加一些测试用例,例如:
- 异常输入测试:验证游戏对异常输入(如非常快速的连续点击)的处理。
- 用户界面测试:验证游戏界面在不同分辨率和屏幕尺寸下的显示效果。
4.3AIGC表格
子任务 | 借助何种AIGC技术 | 实现了什么功能 | 效果如何? |
---|---|---|---|
游戏逻辑开发 | GitHub Copilot、kimi | 辅助编写游戏循环、事件处理和图案匹配逻辑 | 显著提高了编码速度和代码质量,减少了编写样板代码的时间 |
图像资源生成 | 文生图工具(如 豆包 或 craiyon ) | 设计游戏图案和背景 | 提高了游戏的视觉吸引力,使游戏界面更加生动有趣 |
文档和注释编写 | kimi | 辅助编写项目文档和代码注释 | 提高了文档的质量和专业性,减少了语法和拼写错误 |
AI写代码经常修改了代码但是无法实现,需要慢慢调试。
AIGC技术的优缺点
优点:
- 提高效率:自动化生成内容,减少人工重复劳动。
- 创意辅助:提供创意灵感,辅助设计师和开发者快速迭代。
- 个性化定制:根据用户反馈和偏好生成个性化内容。
- 质量提升:通过AI辅助,提高代码和文档的专业质量。
缺点:
- 独创性限制:AIGC可能缺乏真正的创新和个性化表达。
- 依赖数据:生成内容的质量受限于训练数据的质量和多样性。
- 道德和法律风险:可能涉及版权、隐私和伦理问题。
- 技术限制:某些复杂任务和高度创造性工作难以完全由AI替代。
适合与不适合的应用
适合应用:
- 内容创作:自动生成文章、图像、音乐等。
- 辅助设计:辅助UI/UX设计,提供布局和视觉设计建议。
- 代码开发:辅助编写和测试代码,提高开发效率。
- 文档撰写:自动生成和校对技术文档和项目报告。
不适合应用:
- 高度创新性工作:需要深度创意和个性化表达的任务。
- 复杂情感交互:需要深刻理解人类情感和文化背景的交流。
- 法律和伦理敏感领域:涉及隐私、版权和伦理判断的任务。
- 专业决策:需要专业知识和经验的复杂决策过程。
学习内容 | 收获 |
---|---|
Pygame 框架使用 | 精通了Pygame框架的核心机制,包括图形渲染、事件处理和用户输入管理,为复杂游戏逻辑的实现奠定了技术基础。 |
图案加载与动态调整 | 掌握了资源动态加载和自适应布局技术,确保了游戏界面在不同设备和分辨率下均能提供一致的用户体验。 |
图案分布随机性优化 | 实现了高级随机分布算法,优化了游戏图案的生成逻辑,增强了游戏的挑战性和重玩价值。 |
时间管理与倒计时逻辑 | 设计并实现了精确的时间管理系统,通过倒计时机制有效提升了游戏的节奏和玩家的参与度。 |
AIGC工具应用 | 有效利用了人工智能辅助生成内容(AIGC)工具,如GitHub Copilot,以提高编码效率和创新设计,探索了AIGC在游戏开发中的前沿应用。 |
心得体会
- 技术深度与广度:通过本项目,我不仅深化了Pygame框架的技术应用,还拓宽了对游戏设计、界面设计和用户体验的理解。Python的简洁性和Pygame库的强大功能使得游戏开发变得容易上手,同时也让我对游戏开发有了更深的理解。
- 创新与效率:AIGC工具的应用极大地提高了开发效率,例如,GitHub Copilot在编写代码时提供了智能的代码补全,而DALL-E则帮助我快速生成了吸引人的游戏图案和背景。
总的来说,AIGC技术在游戏开发中的应用不仅提高了我的工作效率,也让我对游戏开发的各个方面有了更深入的了解。这些经验对我的未来学习和职业发展都有很大的帮助。
4.4PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
• Estimate | • 估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | 535 | 525 |
• Analysis | • 需求分析 (包括学习新技术) | 40 | 30 |
• Design Spec | • 生成设计文档 | 20 | 15 |
• Design Review | • 设计复审 | 20 | 10 |
• Design | • 具体设计 | 60 | 75 |
• Coding | • 具体编码 | 300 | 310 |
• Code Review | • 代码复审 | 45 | 40 |
• Test | • 测试(自我测试,修改代码,提交修改) | 50 | 45 |
Reporting | 报告 | 125 | 125 |
• Test Repor | • 报告 | 90 | 100 |
• Size Measurement | • 计算工作量 | 15 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 15 |
合计 | 680 | 670 |
4.5用户文档
1. 游戏介绍
《耶了个耶》是一款基于Pygame库开发的匹配类游戏。玩家需要在限定时间内,通过点击相同的动物图案进行消除,以获得分数。游戏提供简单和困难两种模式,简单模式下两个相同图案消除得1分,困难模式下三个相同图案消除得1分。
2. 游戏安装
游戏不需要额外安装,只需确保计算机上已安装Python和Pygame库。如果未安装Pygame,可以通过Python的包管理器pip进行安装:
pip install pygame
3. 游戏启动
游戏通过运行主程序文件启动。在命令行中导航到游戏文件所在目录,然后运行以下命令:
python game.py
请确保替换game.py
为实际的主程序文件名。
4. 游戏玩法
- 选择模式:游戏开始时,玩家可以选择简单模式或困难模式。
- 图案消除:在游戏区域内,点击选择图案,若选中两个(简单模式)或三个(困难模式)相同的图案,则消除它们并获得分数。
- 加时道具:游戏中有一个加时间道具,点击使用可以增加5秒游戏时间,但每局游戏只能使用一次。
- 游戏结束:当所有图案被消除或时间耗尽时,游戏结束。游戏结束后,玩家可以选择重新开始或返回主菜单。
5. 控制说明
- 鼠标点击:用于选择和消除图案。
6. 游戏设置
- 音效:游戏内置音效。
7. 游戏退出
玩家可以通过点击游戏界面的退出按钮或在游戏菜单中选择退出游戏。
8. 故障排除
如果游戏运行出现问题,可以尝试以下步骤:
- 确保Python和Pygame库是最新版本。
- 检查游戏文件是否完整,无缺失。
- 尝试重新启动游戏或计算机。
9. 联系我们
如果需要技术支持或有任何反馈,请联系开发者团队。
10. 版权信息
《耶了个耶》由本文作者开发。
4.6个人小结🌹
从最开始的想设计思路,可能想的没有很完善,后面不断新增了好多功能。开始编写代码的时候,没有使用类分装,零零散散的很难慢慢添加功能,后续在类中使用大量函数,比较好更改。完成任务基本要求,包括主页面,游戏界面,多层消除,胜利和失败的页面展示、游戏效果界面和卡片图案。与最开始的想法设计还是有所不同,经过不断完善修改得到此版本,写游戏真的真的好不容易啊。🍂
最后一定一定要备份,github误删分支太可怕了!!!