软件工程第二次个人作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253
这个作业的目标 借助AIGC工具,设计一个类似“羊了个羊”的消除小游戏
学号 102202115

项目展示🐳

Github仓库链接https://github.com/nymph4x/nymph4x.git

项目介绍🐬

该项目是一个基于Pygame库开发的益智类消除游戏,名为"鱼了个鱼"。玩家需要通过点击匹配三张相同图案的卡片来将它们消除,并在规定时间内清空所有卡片即可获胜。游戏包含不同的难度模式,并提供了简单的用户界面,包括主菜单、游戏界面以及游戏结束界面。

前端设计与特色功能🍧

  • 图像设计: 游戏中采用多种图像背景和卡片图案,背景图案包括主菜单、游戏进行中的场景以及游戏胜利/失败的背景。
  • 卡片互动: 玩家点击卡片进行匹配操作,点击三张相同的卡片即消除,卡片之间的交互响应流畅。
  • 倒计时功能: 在游戏中,玩家需要在规定时间内完成匹配,提供了实时倒计时显示功能。
  • 难度选择: 玩家可在游戏开始前选择"简单模式"或"困难模式",每种模式对应不同数量的卡片和时间限制。
  • 反馈机制: 游戏中,当匹配错误或成功消除时,卡片会有视觉反馈(边框或消除效果)。

项目使用技术和特殊算法✨

  • Pygame: Pygame是一个基于Python的游戏开发库,用于处理图像、音效、键盘鼠标事件等。
  • 图像加载与缩放: 使用pygame.image.load()加载图片,并通过pygame.transform.scale()对图片进行适配屏幕尺寸的缩放。
  • 卡片的堆叠逻辑: 卡片放置时有两个层次,模拟了堆叠的效果,游戏在布局时随机生成卡片的坐标,并考虑不让相同卡片重叠过多。
  • 匹配逻辑: 通过在卡片类Card中使用selected和cleared标记卡片的状态,匹配时检查选中的三张卡片是否具有相同的图片,并通过移除标记来清除卡片。

实现思路🍀

  1. 卡片生成: 随机生成位置和层次的卡片,并确保卡片在生成时不完全重叠。
  2. 卡片匹配: 检测玩家点击的三张卡片是否相同,如果匹配成功,则标记卡片为cleared并从游戏中移除;如果不匹配,卡片将恢复未选中状态。
  3. 时间倒计时: 使用pygame.time.get_ticks()函数记录游戏开始后的时间,并在游戏界面显示剩余时间。

下图展示了游戏逻辑和卡片匹配过程:


+--------------------+    +---------------+
|    玩家点击卡片    | -> |  匹配三张卡片  | 
+--------------------+    +-------+-------+
                                    |
                    +--------------------------+
                    |      全部匹配成功?       |
                    +-------+-----------+-------+
                            |           |
                        是  |           |  否
                            |           |
            +---------------------+     |
            |  消除选中卡片,继续  |     |
            +---------------------+     |
                                        |
                        +-----------------------------+
                        |  重置已选卡片,玩家继续选择  |
                        +-----------------------------+

测试🍥

针对“鱼了个鱼”游戏的功能,编写以下测试样例来确保游戏逻辑和用户界面工作正常。

测试样例1:正常匹配三张相同卡片

测试步骤:

  1. 运行游戏并选择"简单模式"。
  2. 在游戏中找到三张相同的卡片,点击它们依次进行匹配。
  3. 检查是否成功消除这三张卡片。

测试样例2:错误匹配三张不同卡片

测试步骤:

  1. 运行游戏并选择"简单模式"。
  2. 在游戏中点击三张不同的卡片。
  3. 检查卡片是否会被恢复为未选中状态(卡片的边框颜色恢复为默认状态)。

测试样例3:倒计时结束

测试步骤:

  1. 运行游戏并选择"困难模式"。
  2. 等待60秒的倒计时结束,不进行任何操作。
  3. 检查是否进入失败界面。

测试样例4:胜利条件

测试步骤:

  1. 运行游戏并选择"简单模式"。
  2. 匹配并消除所有卡片。
  3. 检查是否进入胜利界面。

测试样例5:主菜单按钮交互

测试步骤:

  1. 运行游戏并进入主菜单。
  2. 点击"Start Game"按钮进入游戏,或点击"Easy Mode"和"Hard Mode"按钮。
  3. 检查按钮是否可以正常响应。

测试结果展示🍡

主菜单:

游戏界面(简单模式):

游戏界面(困难模式):

结束界面(胜利):

结束界面(失败):

动态测试:
上传到了github上:https://github.com/nymph4x/nymph4x/blob/main/动态测试.mp4

测试设计评价

  1. 覆盖范围: 测试用例涵盖了游戏的关键功能,包括匹配逻辑、计时功能、胜利/失败条件、菜单交互等。基本涵盖了用户可能遇到的常见场景。
  2. 功能验证: 通过这些测试,验证了卡片匹配的正确性、倒计时功能、游戏的胜负判断,以及用户界面的交互效果。
  3. 边界测试: 进行了错误匹配和倒计时结束的场景测试,确保游戏在异常操作和时间限制到期后能正常处理。
  4. 可扩展性: 未来可以增加更多边界测试,例如:
    • 多层卡片的匹配(考虑卡片的Z轴层次)。
    • 考虑更多复杂的游戏逻辑(如更高难度的卡片数量和时间限制)。

总结

通过以上测试,基本覆盖了游戏的核心功能,确保游戏可以按预期运行,用户体验流畅。测试用例满足了程序的主要需求,并提供了可靠的保障。

AIGC表格🎊

使用AIGC工具生成了以下表格,记录了项目中的学习内容及心得体会:

子任务 借助何种AIGC技术,实现了什么功能 效果如何
界面设计与美术素材 使用Craiyon生成游戏的背景图和卡片图案 效果良好,Craiyon生成的图像提供了卡片的多样性和界面设计的灵活性。图像生成省去了手动设计的时间。
代码生成与优化 使用GitHub Copilot自动补全部分Pygame代码,实现卡片逻辑 Copilot帮助补全代码逻辑,提升了代码编写效率,尤其是常用的Pygame操作、事件处理和基础UI设计部分。
测试用例设计 使用ChatGPT设计详细的测试用例 ChatGPT生成了多个符合需求的测试用例,涵盖了匹配、倒计时、菜单交互等,确保功能完整性和覆盖率。
功能描述与文档撰写 使用ChatGPT撰写项目文档,介绍代码功能、项目思路和测试方案 ChatGPT生成的文档清晰且易于理解,节省了编写时间,文档内容涵盖了项目各个功能模块及测试设计的详尽描述。

AIGC技术的优缺点

  • 优点:

    • 快速生成内容: AIGC技术可以帮助快速生成美术素材、代码和文档,减少开发时间,提升开发效率。
    • 辅助设计与创作: 在项目设计阶段,AIGC工具可以提供有用的建议和创意,特别适用于生成图像、测试用例和代码优化。
    • 持续学习与改进: 基于历史数据和反馈,AIGC工具能够自我改进,提供更符合需求的生成结果。
  • 缺点:

    • 对创意限制: 在图像和代码生成上,AIGC的灵活性有限,有时不能完全满足个性化需求,需要手动调整和修改。
    • 无法处理复杂逻辑: 对于复杂的游戏逻辑设计和具体算法实现,AIGC的理解和生成能力有限,可能需要人工介入进行修改。
    • 缺乏精确度: 对于非常具体的需求,AIGC生成的内容可能不够准确,需要进一步调整和优化。

适用场景与限制

  • 适合用在:
    • 生成简单素材(如图像、代码片段、测试用例)。
    • 辅助文档撰写和初步代码编写,尤其是常见的框架搭建和逻辑实现。
  • 不适合用在:
    • 复杂的业务逻辑设计和细致的算法优化。
    • 精确的用户交互设计,尤其是涉及大量个性化元素时,AIGC可能无法完全满足需求。

PSP表格🎉

PSP 阶段 预估耗时(分钟) 实际耗时(分钟) 评价
需求分析 30 50 基本按照预期,需求明确清晰
程序设计 100 120 卡片生成和匹配逻辑稍复杂,耗时略超
编码实现 300 350 Pygame的学习曲线稍高,特别是图像处理部分
测试与调试 40 60 测试全面,发现了一些边界情况,修正后顺利通过
总结与文档撰写 60 60 需要梳理清楚思路,且细化功能模块。

个人作业评价🎈

  • 优点: 完成了从需求分析、设计、编码到测试的完整流程,提升了对Pygame库的理解和应用能力,能够通过合理的算法设计实现游戏的逻辑。
  • 不足: 图像处理部分可以更进一步优化,例如同层卡片不可重叠,提升游戏的视觉效果,卡片上方若有覆盖无法选中。
posted @ 2024-09-18 19:18  你听风在吹22  阅读(17)  评论(0编辑  收藏  举报