软件工程第二次作业

Posted on 2024-09-18 20:44  六一!!  阅读(37)  评论(0编辑  收藏  举报
这个作业属于哪个课程 软件工程
这个作业要求在哪里 查看作业要求
这个作业的目标 学会从0开始写一个小游戏,学会pygame的使用
学号 102202112刘莹

一、🛠️ 工具准备

  1. 安装 Pygame

  1. 使用到的 AIGC 工具
  • Craiyon、豆包:生成游戏背景图和游戏图标
  • ChatGPT:编写部分代码

二、🎮 游戏设计逻辑

(一)游戏界面设计

  • 使用 Craiyon 设计游戏背景并进行修改
  • 使用豆包设计游戏中用于消除的图标
  • 使用豆包设计游戏中的按键

(二)游戏规则设计

1. 游戏目标

游戏分为两个模式:简单模式困难模式。玩家通过点击和消除相同图标获得高分,依据模式要求在限定时间内消除所有图标来通关。

2. 游戏模式

  • 简单模式
    • 图标:每种图标出现2次或2的倍数次,共8种不同的图标。
    • 目标:倒计时结束前清除所有图标获胜。
  • 困难模式
    • 图标:每种图标出现3次或3的倍数次,共10种不同的图标。
    • 空格:界面底部有五个空格。
    • 目标:倒计时结束前清除所有图标获胜,五个空格被填满则游戏结束。

(三)🔊 游戏音效设计

  • 点击音效:图标被点击时播放。
  • 消除音效:图标匹配成功时播放。
  • 成功音效:游戏成功结束时播放。
  • 失败音效:游戏失败时播放。

(四)🖥️ 游戏界面

1. 主菜单

  • 选择模式:点击“简单模式”或“困难模式”开始游戏。
  • 游戏说明:点击查看游戏规则。
  • 退出游戏:退出游戏。

2. 游戏进行中

  • 图标显示:界面上显示图标,玩家可以点击选择。
  • 倒计时:倒计时从30秒开始,时间以红色显示在屏幕上方。
  • 分数:屏幕右上角显示当前得分。

3. 游戏结束

  • 成功:清除所有图标或达到指定分数后,显示“通关啦”的图片,并有“重新开始”和“退出游戏”按钮。
  • 失败:倒计时结束未完成目标,显示“游戏结束”图片,并提供“重新开始”和“退出游戏”按钮。

4. 按钮功能

  • 重新开始:点击返回主菜单。
  • 退出游戏:退出游戏程序。

(五)📚 操作指南

  • 选择图标:点击屏幕上的图标进行选择。
  • 放置图标:选中图标后,自动放置在底部空格中。
  • 消除图标:若底部有三个或更多相同图标,它们会被消除,得分增加。

三、🎥 游戏展示及过程

  1. 游戏主界面

  1. 游戏过程界面(困难模式)

  1. 游戏成功通关界面

  1. 游戏失败界面

  1. 游戏说明界面

  1. 游戏图标展示

四、📂 项目展示

(一)项目代码:

GitHub 项目地址

(二)项目介绍

1. 前端设计与特色功能

  • 前端设计:基于 Pygame 开发,整个设计注重用户体验和界面友好性。
    • 主界面设计
      • 功能菜单:主界面提供了模式选择、游戏说明和退出游戏三个选项,玩家可以轻松选择进入相应的功能。
      • 背景设计:游戏背景简洁明了,与游戏整体风格保持一致,使玩家可以专注于游戏本身。
    • 游戏界面
      • 图标布局:游戏中会出现若干可点击的图标,布局合理,方便玩家点击。
      • 倒计时与分数:倒计时和分数显示在屏幕上方,红色字体醒目,帮助玩家时刻了解剩余时间和当前得分。
      • 按钮布局:重新开始和退出游戏按钮放置在图片中央,操作直观。
  • 特色功能
    • 双模式选择:提供了简单模式和困难模式,两者在规则上保持一致,但难度不同。玩家可以根据自己的水平进行挑战。
    • 音效系统:每个操作(点击、消除、胜利、失败)都有不同的音效,增强玩家的沉浸感。
    • 计时机制:游戏中提供了倒计时功能,玩家需要在规定时间内达成目标,增加了紧张感和挑战性。

2. 使用技术及算法:使用Pygame进行游戏前端界面的渲染和交互处理

  • 技术栈
    • Pygame库:用于游戏界面绘制、事件处理、音效播放和图像加载。
    • Python:作为游戏的主要开发语言,处理逻辑控制和数据交互。
  • 图标点击与消除检测算法
    • 点击检测:通过Pygame的事件处理功能,监听鼠标点击事件。当鼠标点击图标时,检测该点击是否位于图标的区域内。如果命中,则选中该图标。
    • 叠层图标检测识别:为了解决图标重叠时的点击优先问题,在点击检测时,首先按图标的显示顺序进行排序,确保点击最上层的图标能被优先识别。
    • 消除算法:当底部栏中出现三个及以上相同图标时,触发消除逻辑,通过遍历底部栏中的图标,检查是否满足条件(相同图标个数>=3),如果满足则调用消除函数,移除相应图标并播放音效,同时更新分数。。
  • 游戏结束状态判断与音效处理
    • 倒计时实现:通过每帧更新机制实现实时倒计时功能。
    • 游戏结束判断
      • 成功判断:如果在规定时间内成功消除所有图标或达到指定分数,播放成功音效并显示成功图片。
      • 失败判断:如果时间耗尽且未完成目标,则播放失败音效并显示失败图片。
        依据游戏状态播放不同的音效,并切换到对应的结束界面。

(三)项目测试

  • 简单模式

  • 困难模式

(四)AIGC表格:学习内容及心得体会

序号 学习内容 心得体会
1 Pygame库的使用 学会了如何使用Pygame创建简单的2D游戏界面、加载图像、处理用户输入,以及播放音效,实用性很强。
2 事件监听与响应机制 掌握了Pygame的事件监听机制,通过处理用户输入(如鼠标点击、键盘操作)来改变游戏状态,提高了对事件驱动开发的理解。
3 图标点击与消除逻辑 通过实现图标点击、消除算法,理解了如何管理游戏对象的状态与交互,体会到了逻辑结构在游戏开发中的重要性。
4 时间与倒计时机制 学习了如何实现时间管理,特别是在游戏中实现倒计时功能,提升了对游戏进程控制的理解。
5 游戏结束判断 在不同条件下判断游戏胜利或失败,理解了如何根据游戏状态调整用户界面和音效,为游戏逻辑增加了更多细节与趣味性。
6 用户体验设计 从界面布局到操作交互,注重用户体验,意识到图像、音效等细节在提升游戏可玩性方面的作用。
7 调试与问题解决 通过调试代码,解决了如图标点击层级等问题,学会了如何快速定位和解决游戏开发中的实际问题。
8 算法优化 在图标消除、倒计时等算法的优化上,深刻体会到如何在游戏开发中平衡性能与功能性。
9 音效管理与互动 为不同操作添加音效后,增强了游戏的互动性,体会到了声音在游戏体验中的重要性。
10 项目管理与开发流程控制 学会了如何合理分配开发任务,使用PSP表格对任务进行分解,提升了项目管理的意识。

(五)PSP表格:任务分解与时间管理

PSP阶段 任务内容 预估耗时 (小时) 实际耗时 (小时) 备注
计划 预估项目开发时间,制定整体开发计划 1 1 规划了每个开发阶段的主要任务和预计所需时间。
需求分析 分析并确定游戏的功能需求 2 2.5 深入分析了用户交互、音效反馈、图标消除等需求,超出预期时间。
设计 界面设计、音效布局、游戏逻辑设计 3 3.5 界面设计花费了更多时间,尤其是重叠图标点击问题的处理。
实现编码 编写Pygame代码,处理图标消除、倒计时、游戏结束判断等逻辑 8 9 编写代码过程中遇到一些调试问题,如图标点击层级和音效播放的细节处理。
测试 对游戏各个功能进行全面测试,确保逻辑正确 3 4 测试中发现了一些意外行为,尤其是在音效和界面切换上,需要进行多次调整。
调试与修正 修复调试过程中出现的BUG 2 3 修复了如倒计时不准、音效错位等问题,耗时略超预期。
评审 项目整体评估,分析是否满足需求,优化细节 2 2 进行整体检查和评估,最终效果基本达到预期。
文档撰写 撰写项目文档,整理代码注释及项目说明 2 1.5 文档撰写顺利完成,时间略低于预期。
总结与反思 总结整个项目的开发经验,撰写心得体会 1 1 对开发过程中的问题与经验进行总结,并提出改进方向。
总耗时 24 27.5 整个项目实际耗时略高于预期,主要集中在设计和调试阶段。

五、📝 个人小结

在本次项目中,通过使用 Pygame,我学会了如何从零开发一个2D游戏,尤其是在界面设计、音效系统和逻辑处理上有了很大进步。我深刻认识到细节设计的重要性,比如图标点击识别和音效加入对游戏体验的提升。通过 PSP 表格的管理,我的时间分配和项目管理能力也得到了锻炼。未来,我会更加注重开发过程中的细节优化,继续提升自己的开发技能和用户体验设计能力。

Copyright © 2024 六一!!
Powered by .NET 9.0 on Kubernetes