2024秋软件工程个人作业(第二次)

这个作业属于哪个课程 < https://edu.cnblogs.com/campus/fzu/SE2024>
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253
这个作业的目标 借助AIGC工具,使用Python编写一个类似“羊了个羊”和“抓大鹅”风格的小游戏
学号 102201308

1.项目展示

  • Github仓库链接:https://github.com/xiaoyu-uu/xiaoyu-uu

    2.环境配置

    因为我的Copilot学生认证一直没有通过,所以最后我选择使用PyCharm来进行本次作业的撰写。

  • 下载Python、PyCharm(社区版)


  • 在Pycharm直接安装pygame、pip、AIGC辅助工具


    3.游戏介绍

    设计理念

  • 鱻了个鱻是一款海洋主题的游戏,我利用AIGC工具Craiyon生成一堆鱼类不同表情的icon来作为卡片元素,引人入胜,以消消乐的形式给用户带来游戏体验。
  • 我运用海洋的元素,设计鱻了个鱻游戏title为游戏开始界面增加美观性
  • 游戏设置了简单模式(4行)和困难模式(7行)供不同用户选择,游戏界面以羊了个羊为参考,以卡片矩阵的形式配以卡片槽限制。 ##创新点
  • 增加了倒计时和积分排行榜机制,给用户以紧张刺激、激烈竞争的感觉
  • 游戏进行时每5s卡片布局就会刷新一次,用户会忙中出错导致错选卡片,导致卡片槽太满,给游戏增加难度和趣味性
  • 开始游戏界面有两个按钮,点击即可随时刷新卡片布局和返回主菜单
  • 游戏有两种GG方式:①倒计时结束②卡片槽满

    4.核心算法和实现思路

    1. 游戏状态管理

    使用全局变量管理游戏状态(如start_game、game_mode等),通过这些变量控制游戏的不同阶段。

    2. 随机生成卡片

    在gameMapInit(mode)函数中,根据选择的模式(简单或困难)生成一个随机的卡片矩阵。
    卡片的生成使用random.randint(1, 7)来确保每个位置都有有效的卡片。

    3. 事件处理

    在handleEvent()函数中,通过事件循环来处理用户的输入。
    使用鼠标点击事件来选择游戏模式、移动卡片、重启游戏或返回主菜单。

    4. 卡片移动和消除逻辑

    在move_card_to_box(i, j)函数中,检查卡片的目标位置,如果目标位置为空,则将卡片移动到该位置。
    使用check_and_remove_cards(row, col)函数检查是否有相邻的卡片可以消除,并根据条件更新得分。

    5. 游戏结束检测

    在check_game_over()函数中,检查最后一行是否已满,如果已满,则记录最高得分并重置游戏状态。
    通过record_high_score(score)函数记录当前得分,保持最高得分记录的排序。

    实现思路图表

    以下是实现思路的流程图,展示了游戏的主要逻辑和流程:
    +-----------------------+
    | Start Game |
    +-----------------------+
    |
    v
    +-----------------------+
    | Display Mode Menu |
    +-----------------------+
    |
    v
    +-----------------------+
    | User Selects Mode |
    +-----------------------+
    |
    v
    +-----------------------+
    | Initialize Game |
    | Map and Variables |
    +-----------------------+
    |
    v
    +-----------------------+
    | Main Game Loop |
    | - Handle Events |
    | - Draw Game State |
    | - Update Logic |
    +-----------------------+
    |
    v
    +-----------------------+
    | Check Game Over? |
    +-----------------------+
    |
    v
    +------No-------+
    | |
    v v
    +-----------------------+
    | Update Game State |
    +-----------------------+
    |
    v
    +-----------------------+
    | Game Over Screen |
    +-----------------------+

    5.测试

    游戏开始界面

    简单模式

    困难模式

    游戏结束界面和排行榜展示

    测试评价

  • 我分别测试了两种GG方式,倒计时结束和卡片槽满,游戏都成功结束。并在排行榜中记录分数,点击任意键重新回到菜单。
  • 在游戏中,拼手速选择卡片移到卡片槽中,只有在两张相邻的卡片相同时,才会产生消除效果。
  • 完美达到我对这个游戏的预期水平和效果。

    6.AIGC表格

    7.PSP表格

    评价与分析

    做得好的地方:

  • 按时完成了大部分任务,尤其是在需求分析和设计阶段,明确了目标,确保了后续工作的顺利进行。
  • 在测试与调试环节,认真处理了多个bug,提升了游戏的稳定性和用户体验。

    需要改进的地方:

  • 核心代码的实现耗时超出预期,主要是因为对逻辑的设计考虑不够全面,后期做了多次修改。
  • 图形处理部分的时间控制不佳,需提前规划资源的加载和处理。

    总结:

  • 整体项目完成情况良好,但在时间管理和逻辑设计方面还有改进空间。下次项目中,建议在初期阶段进行更细致的设计,以降低后期修改的时间成本,同时提高工作效率。
  • posted @ 2024-09-18 22:06  -myimagination  阅读(21)  评论(0编辑  收藏  举报