Xingheerの小窝

Loading...

软件工程第二次作业

这个作业属于哪个课程 软件工程
这个作业要求在哪里 作业要求
这个作业的目标 使用Python编写一个“羊了个羊”风格的消除类小游戏
学号 102202145
😺1. 项目介绍

1.1 项目背景

随着移动游戏和休闲游戏的流行,各种风格独特、简单易玩的小游戏获得了广泛关注。本次作业的目标是设计并实现一个“喵了个喵”风格的消除类小游戏,旨在通过实践提高对游戏开发流程的理解,并掌握Pygame库的使用。

1.2 游戏玩法概述

游戏的核心玩法是图标消除。玩家通过点击屏幕上的图标,将图标加入底部方框中。如果底部方框中有三个或更多相同的图标,就会触发消除,并获得相应的分数。游戏采用倒计时机制,倒计时结束即为游戏失败。玩家可以通过点击“暂停”按钮来暂停或继续游戏。游戏分为简单模式和困难模式,模式选择会影响图标的种类和出现频率。

  • 玩家操作方式

    • 点击屏幕上的图标进行选择。
    • 点击“暂停”按钮可以暂停游戏,重新点击则继续游戏。
    • 点击空白处可以重新开始游戏。
  • 图案匹配消除的逻辑

    • 底部方框中最多显示5个图标。
    • 若底部方框中有三个或更多相同的图标,则这些图标会被消除,并增加分数。
  • 倒计时机制

    • 游戏开始时设置60秒倒计时,倒计时结束游戏失败。
    • 倒计时显示在游戏界面的左上角。

1.3 项目技术栈

  • 编程语言:Python
  • 游戏开发框架:Pygame
  • 代码生成工具:GitHub Copilot
  • 音频处理:Pygame内置的音频模块
  • 图形资源:本地图片资源(如按钮、背景、图标等)
  • 版本控制:Git(用于代码版本管理)

1.4 项目结构

项目代码主要分为以下几个部分:

  • 初始化与设置:加载游戏窗口、音效、背景图像和图标等资源。

  • 模式选择:实现游戏模式(简单或困难)的选择,并初始化游戏中的图标和层次。

  • 游戏逻辑:包含核心玩法:

    • 处理玩家点击,更新底部方框中的图标。
    • 检查图标匹配、游戏胜负条件,以及底部方框是否满足消除或失败条件。
  • 界面绘制:负责绘制游戏画面,包括图标层、底部方框、得分和暂停按钮等。

  • 游戏结束处理:显示游戏结束时的画面,包括胜利和失败界面。

  • 主菜单与设置:实现主菜单界面,包括开始游戏、设置、商店、进入游戏界面等功能。


🥳 2. 游戏功能实现

2.1 界面设计

  • 主菜单
    image
    点击开始游戏后:
    image
    默认就是简单模式,点击进入喵群后就可以进入游戏。
  • 游戏界面
    简单模式:六个图案,重叠层数少
    image
    困难模式 :十个图案,重叠层数多
    image
  • 结束界面
    成功页面:
    image
    失败页面:
    image

2.2 游戏逻辑

  • 图案生成与摆放:使用 get_patterns() 函数生成游戏图标,按照不同难度随机摆放在多个层中,确保图标不会出现在底部方框区域。

  • 图案匹配消除:通过 check_match() 函数检测底部方框中是否有三个相同的图标。如果有,则触发消除效果、增加得分,并播放消除音效。

  • 底部方框与暂停机制draw_bottom_box() 函数负责绘制底部方框,玩家点击图标后将其添加到底部方框。点击“暂停”按钮可以切换游戏的暂停和继续状态,暂停期间无法进行其他操作。

2.3 难度设置

  • 难度设置:游戏提供了简单模式和困难模式。简单模式使用前6个图标,困难模式使用所有图标。难度设置通过 select_mode() 函数来选择,影响图标的数量和层数。困难模式下,增加图标层数,使游戏更具挑战性。

2.4 扩展功能

  • 道具和分数系统:游戏中没有额外道具,但通过消除图标来增加分数。每成功消除三个相同的图标,玩家将获得30分。游戏还实现了分数显示功能,通过 draw_score() 函数实时显示当前得分。
  • 多难度模式:游戏支持简单和困难两个模式。模式选择通过 select_mode() 函数实现,并根据模式调整图标生成数量和层数。
  • 点击设置后
    image
    点击游戏说明:image

点击商店:image

  • 游戏音效
    视频无法上传/制作了背景音乐,点击音效,消除音效
    游戏画面展示:

🌈 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 测试用例设计
    为了确保游戏顺利运行,我设计了一些简单的测试用例,过程就像在试玩游戏一样:

    1. 主菜单按钮测试

      • 测试内容:看看主菜单上的“开始游戏”、“设置”、“退出”按钮能不能正常工作。
      • 测试步骤
        1. 启动游戏,进入主菜单。
        2. 点击“开始游戏”按钮,看看能否顺利进入游戏页面。
        3. 点击“设置”按钮,确认是否进入设置界面。
        4. 点击“退出”按钮,游戏是否正常退出。
      • 期望结果:按钮都能乖乖地切换到对应的页面或退出游戏。
    2. 游戏逻辑测试

      • 测试内容:测试图案生成、匹配消除、底部方框逻辑,以及暂停和重启功能。
      • 测试步骤
        1. 开始游戏,看看图案生成得是否正确。
        2. 尝试匹配三个相同的图案,验证能不能顺利消除。
        3. 填满底部方框,看看是否符合游戏失败的规则。
        4. 按下暂停按钮,确认倒计时停止,并且按钮变成“开始”。
        5. 点击“开始”,看看游戏状态是否恢复正常。
        6. 游戏失败时,看看提示信息是否显示正确。
      • 期望结果:游戏逻辑正常运作,图案匹配和消除符合规则,暂停和重启功能都能顺利切换。
    3. 难度设置测试

      • 测试内容:不同难度模式会不会影响图案的生成和布局。
      • 测试步骤
        1. 选择不同的难度模式(比如简单模式)。
        2. 开始游戏,观察图案的生成和布局是否符合设置。
      • 期望结果:不同难度下的图案生成要符合预期,比如简单模式下的图案更友好一些。
    4. UI测试

      • 测试内容:界面元素的位置、透明度,看看符不符合设计要求。
      • 测试步骤
        1. 检查游戏界面中的按钮位置和透明度。
        2. 确保底部方框不会遮挡图案,并且最多显示5个图案。
      • 期望结果:界面元素按照设计要求显示,界面整洁,确保用户体验棒棒的。
  • 4.2 测试结果
    根据测试的情况,总结一下结果:

    1. 主菜单按钮测试:所有按钮都按预期工作,界面切换非常流畅。
    2. 游戏逻辑测试:图案生成和匹配消除都正常,底部方框逻辑也没问题,暂停和重启机制顺利运作,游戏失败提示很准确。
    3. 难度设置测试:不同难度模式的图案生成符合预期,简单模式的布局更合理。
    4. 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. 项目展示

🧩 8. 总结

  • 8.1 完成情况

    本项目的小游戏“喵了个喵”已按计划完成,主要功能包括:

    • 主菜单:提供了“开始游戏”、“设置”和“退出”按钮,设计了用户友好的界面。
    • 游戏界面:实现了图案生成、图案匹配消除、倒计时机制等核心游戏逻辑。
    • 结束界面:设计了游戏成功和失败页面,并实现了相应的提示和重新开始功能。
    • 难度设置:提供了简单和困难模式,虽然困难模式暂时未实现,但简单模式下的游戏逻辑已完善。
    • 暂停和重启机制:确保了游戏在暂停期间无法操作,且能够正确切换游戏状态。

    遇到的挑战

    • 图案匹配逻辑:图案匹配的实现需要精确控制底部方框的图案消除逻辑,这在实现时遇到了一些复杂的逻辑问题。
    • AIGC工具的应用:虽然AIGC工具极大地提高了开发效率,但在使用过程中也需要对生成的代码进行仔细的检查和调整,以确保功能的正确性。
  • 8.2 展望
    若有更多时间,可以考虑对游戏进行以下改进或扩展:

  • 好友对战:引入好友对战功能,让玩家可以实时匹配好友进行消除比拼,增加游戏的互动性和趣味性。

  • 排行榜:添加全服排行榜和好友排行榜,激发玩家的竞争欲望,提供动力不断挑战更高分数。

  • 总积分系统:引入积分累积机制,记录玩家的每次游戏成绩,并根据总积分给予一定的称号或奖励,提升游戏的长久吸引力。

  • 困难模式实现:进一步开发困难模式,包括更复杂的图案生成规则和难度增加机制。

  • 扩展功能:增加更多的道具和分数系统,为游戏增加更多的互动性和挑战性。

  • 用户体验优化:完善游戏的界面设计和用户体验,如增加背景音乐和音效,提升整体的游戏体验。

  • 多平台支持:考虑将游戏移植到更多平台,如移动设备或Web,扩展游戏的受众群体。

🐱🐱🐱附录

使用AIGC工具生成一个表格,记录在项目中学到的内容及心得体会。

  • AIGC表格
学到的内容 具体应用 心得体会
Pygame库的使用 使用Pygame开发游戏界面和逻辑 Pygame提供了丰富的功能,能够快速实现2D游戏的各种需求,包括图形绘制、音效处理和用户输入。掌握Pygame的使用能够显著提高游戏开发效率。
图案匹配算法 实现了图标匹配和消除逻辑 图案匹配算法需要精确处理数据,确保消除条件的准确性。通过实现匹配算法,我学到了如何设计和优化复杂的逻辑。
倒计时机制 实现了游戏的倒计时功能 倒计时机制对游戏的紧张感和挑战性有很大影响。学会了如何管理和显示倒计时,以及如何在时间结束时处理游戏逻辑。
暂停与重启功能 实现了游戏的暂停和重启功能 实现暂停和重启功能涉及到状态管理和事件处理,学会了如何确保游戏在暂停和恢复时状态的一致性。
AIGC工具的应用 使用GitHub Copilot和ChatGPT生成代码和建议 AIGC工具可以显著提高代码生成效率,特别是在编写重复性代码和设计方面。需要注意生成代码的质量,确保其符合项目需求。
游戏设计 主菜单、游戏界面和结束界面的设计 设计游戏界面需要考虑用户体验和视觉效果。通过设计主菜单和游戏界面,我学会了如何组织和优化游戏界面的布局。
代码调试与优化 解决了代码中的错误并优化了性能 调试和优化代码是开发过程中重要的一部分。通过调试和优化,我提高了问题解决能力,并学到了如何使代码更加高效。
 **AIGC工具的效果**:
 - **优点**:AIGC工具极大地提高了代码生成效率,特别是在复杂逻辑和设计建议方面,能够快速提供符合需求的解决方案。
 - **缺点**:生成的代码需要仔细检查和调整,以确保符合项目需求,并解决可能存在的潜在问题。
 - **适用场景**:适合用于生成重复性高的代码片段和提供设计建议,对于复杂的逻辑实现和具体功能开发仍需依赖开发者的思考和调试。
posted @ 2024-09-18 20:10  xingheer  阅读(29)  评论(0编辑  收藏  举报