软件工程第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253
这个作业的目标 开发消除类小游戏
项目连接 https://github.com/BronLML/Dragon-And-Dragon

一、环境配置与工具准备

1.1 下载pygame

1.2 利用到的AIGC

二、需求分析

2.1项目概述

本项目旨在开发一款类似“羊了个羊”的消除类小游戏。游戏将使用Python语言,结合Pygame或其他图形库进行开发。游戏主要包含主菜单、游戏界面和结束界面,提供丰富的游戏玩法和良好的用户体验。

2.2功能需求分析

  1. 界面设计

    • 主菜单

      • 功能:进入游戏、设置选项、查看排行榜、退出游戏。
      • 设计要点
        • 清晰的游戏标题和Logo。
        • 直观的按钮布局,方便玩家操作。
        • 背景音乐和动态效果增加吸引力。
    • 游戏界面

      • 功能:显示游戏区域、计分板、倒计时、道具按钮等。
      • 设计要点
        • 游戏区域布局合理,图案清晰可见。
        • 计分板和倒计时位置明显,方便玩家查看。
        • 道具按钮易于点击,提示功能明显。
    • 结束界面

      • 功能:显示游戏结果(胜利或失败)、玩家得分、重新开始、返回主菜单。
      • 设计要点
        • 结果反馈明确,鼓励玩家继续挑战。
        • 提供分享功能,增加游戏传播性。
  2. 游戏逻辑

    • 图案生成与分层摆放

      • 实现方式
        • 随机生成一定数量的图案,种类和数量根据难度调整。
        • 图案以层叠方式摆放,部分图案可能被其他图案覆盖。
      • 匹配规则
        • 只有未被覆盖的图案才能被选择。
        • 相同的图案需要三张才能消除。
    • 玩家操作

      • 选择图案:玩家通过点击未被覆盖的图案进行选择。
      • 消除机制:当选择的图案达到三个相同,自动消除并得分。
      • 限制条件:选中图案的暂存区有数量限制,超过限制游戏失败。
    • 游戏结束条件

      • 胜利条件:成功消除所有图案。
      • 失败条件
        • 倒计时结束。
        • 暂存区满且无可消除的组合。
    • 倒计时机制

      • 功能:为游戏增加紧迫感,提升挑战性。
      • 实现方式:在游戏界面实时显示剩余时间,时间耗尽则游戏失败。
  3. 难度设置

    • 随机生成图案摆放顺序

      • 目的:每次游戏都有不同的挑战,增加可玩性。
      • 实现:使用随机算法排列图案位置和层次。
    • 关卡设计

      • 简单模式:图案种类少,层数较少,适合新手。
      • 困难模式:增加图案种类和层数,挑战性提升。
      • 地狱模式:复杂的图案摆放,时间更短,道具有限。
  4. 道具功能

    • 提示

      • 功能:显示一个可消除的图案组合,帮助玩家过关。
      • 使用限制:每局游戏提示次数有限,可通过得分获取额外次数。
    • 撤销操作

      • 功能:撤销上一次的图案选择,避免误操作。
      • 使用限制:每局游戏撤销次数有限。
    • 其他道具(可选)

      • 打乱:重新排列未被消除的图案。
      • 加时:增加倒计时,延长游戏时间。
  5. 分数系统与排行榜

    • 得分计算

      • 基础得分:每消除一组图案获得固定分数。
      • 连击加成:连续快速消除可获得额外加分。
    • 排行榜

      • 本地排行榜:记录本机玩家的最高分数。
      • 显示内容:玩家昵称、得分、排名。
      • 全球排行榜(可选):通过网络上传分数,与全球玩家比拼。

三、游戏界面及美术展示

3.1 游戏界面

游戏界面是用户与游戏互动的核心部分,直接影响玩家的操作体验和视觉感受。本项目的游戏界面设计遵循简洁直观的原则,同时结合了趣味性与功能性。以下是各主要界面的介绍:

1. 主菜单界面

主菜单是玩家进入游戏的起始界面,提供了游戏的核心选项,如“开始游戏”、“设置”、“排行榜”和“退出游戏”按钮。为了增强视觉效果,主菜单使用了动态调整的中文字体和简单易懂的图标。游戏的Logo居于界面顶部,背景使用了自定义的游戏背景图像,使整个界面更加统一与和谐。

2. 游戏模式选择界面

玩家点击“开始游戏”后会进入游戏模式选择界面。在这里,玩家可以选择不同难度的模式(简单模式、困难模式、地狱模式)。该界面沿用了主菜单的设计风格,并通过字体大小和布局的合理排布,确保每个按钮易于操作,且模式选择清晰明确。

3. 游戏界面

游戏界面是整个游戏的核心。玩家将在此进行图案消除的操作。为了保持简洁与功能性并重,游戏区域采用网格布局,图案大小适中,易于玩家点击。玩家的操作区域位于界面底部,提供“撤销”和“提示”功能按钮,帮助玩家在游戏过程中获得更好的操作体验。

4. 游戏成功界面

当玩家成功完成游戏时,游戏将进入成功界面,界面中央会显示“胜利!”字样,并附带玩家的得分。界面设计清新简洁,玩家可以通过点击按钮重新开始游戏或返回主菜单。

5. 游戏失败界面

若玩家未能在规定时间内完成游戏,游戏失败界面会提示玩家“游戏结束!”,并显示当前得分。界面设计与游戏成功界面保持一致,方便玩家快速操作。

6. 排行榜界面

排行榜界面展示了玩家的历史最高得分。界面顶部为金色的“排行榜”标题,下方为得分和时间的列表展示。该界面还设计了返回主菜单的按钮,便于玩家查看排行榜后迅速回到游戏的起始页面。

3.2 AIGC生成的图片

在本游戏项目中,AIGC技术被用于生成部分游戏图像。通过AIGC,我们生成了具有特色的背景图像、图案元素以及按钮样式。这些图片不仅节省了开发时间,也提升了游戏的美术质量,使得游戏界面在视觉上更加吸引人和富有趣味性。

四、博客要求

4.1 项目介绍

前端设计与特色功能

本项目是一款基于Python和Pygame库开发的消除类小游戏,旨在为玩家提供简洁直观且富有趣味性的游戏体验。前端设计注重用户界面的美观性和操作的流畅性,通过合理的布局和视觉元素的搭配,使玩家能够轻松上手并沉浸于游戏过程中。

主要特色功能包括:

  1. 主菜单界面

    • 开始游戏:引导玩家进入游戏模式选择。
    • 设置:允许玩家调整游戏设置,如音量、难度等。
    • 排行榜:展示玩家的高分记录,激励玩家挑战更高的分数。
    • 退出游戏:方便玩家快速退出游戏。
  2. 游戏模式选择界面

    • 简单模式:适合初学者,游戏节奏较慢,消除难度较低。
    • 困难模式:增加了游戏的挑战性,图案消除难度提升。
    • 地狱模式:为资深玩家设计,游戏节奏极快,消除难度极高。
  3. 游戏界面

    • 图案消除:玩家通过点击相同图案进行消除,得分机制激励玩家不断挑战自我。
    • 撤销功能:允许玩家撤销上一步操作,增加游戏的策略性。
    • 提示功能:提供游戏中的提示,帮助玩家在卡关时继续前进。
    • 计时器与分数显示:实时显示剩余时间和当前得分,增强游戏的紧迫感。
  4. 游戏成功与失败界面

    • 游戏成功:展示胜利信息及玩家得分,提供重新开始或返回主菜单的选项。
    • 游戏失败:提示玩家游戏结束,显示当前得分,并提供重新挑战或返回主菜单的选项。
  5. 排行榜界面

    • 高分展示:按照分数降序和时间升序展示玩家的高分记录。
    • 视觉美观:使用金色字体和动态背景,提升排行榜的视觉吸引力。

使用的技术与算法

本项目在技术选型和算法实现上采用了多种先进的工具和方法,以确保游戏的稳定性和用户体验。

  1. Pygame库

    • 图形渲染:用于绘制游戏界面、图案和按钮,实现动态的用户界面。
    • 事件处理:管理用户输入,如鼠标点击和键盘操作,确保游戏响应迅速。
  2. AIGC(人工智能生成内容)技术

    • 图像生成:利用AIGC工具生成游戏背景、图案元素和按钮图标,提升游戏的美术质量和开发效率。
    • 自动化设计:通过AIGC实现界面元素的自动布局和配色,确保界面风格的一致性和美观性。
  3. 排行榜排序算法

    • 多级排序:采用分数降序和时间升序的双重排序算法,确保在分数相同的情况下,完成时间更短的玩家排名更高。
    • 数据持久化:使用JSON文件存储和加载排行榜数据,确保数据的持久性和可扩展性。
  4. 撤销与提示功能算法

    • 撤销操作:通过历史记录栈(stack)实现撤销功能,允许玩家回到上一个操作状态。
    • 提示机制:利用游戏逻辑分析当前图案布局,提供最优的消除提示,帮助玩家在困难时刻继续游戏。

实现思路

  • 模块化设计:将项目分为多个独立模块,如UI管理器、游戏逻辑、排行榜管理等,每个模块负责不同的功能,增强代码的可维护性和扩展性。
  • 面向对象编程:采用面向对象的设计方法,通过类和对象实现游戏的各个组成部分,如按钮、图案、玩家等,提升代码的复用性和组织性。

4.2 测试结果




测试用例设计

为了确保项目的功能完善且无重大漏洞,我们设计了以下测试用例,涵盖了游戏的主要功能和用户交互。

测试用例编号 测试项 输入 预期输出 实际结果 备注
TC001 启动游戏 运行程序并点击“开始游戏”按钮 进入游戏模式选择界面 正常 正常
TC002 选择简单模式 选择“简单模式”按钮 进入简单模式的游戏界面 正常 正常
TC003 选择困难模式 选择“困难模式”按钮 进入困难模式的游戏界面 正常 正常
TC004 选择地狱模式 选择“地狱模式”按钮 进入地狱模式的游戏界面 正常 正常
TC005 撤销操作 在游戏中点击“撤销”按钮 撤销上一步操作 正常 正常
TC006 提示功能 在游戏中点击“提示”按钮 显示可消除的三个相同图案 正常 正常
TC007 游戏胜利 成功消除所有图案 显示游戏成功界面并更新排行榜 正常 正常
TC008 游戏失败 超过时间限制未完成游戏 显示游戏失败界面并更新排行榜 正常 正常
TC009 排行榜数据记录 结束游戏后检查排行榜 新分数被正确记录并按规则排序 正常 正常
TC010 返回主菜单 在各个子界面点击“主菜单”按钮 返回主菜单界面 正常 正常
TC011 退出游戏 点击“退出游戏”按钮 程序正常退出 正常 正常

测试结果展示

经过多轮测试,所有设计的测试用例均通过,功能表现符合预期。以下是部分关键测试用例的详细结果:

  1. 启动游戏(TC001)

    • 步骤:运行程序,点击“开始游戏”按钮。
    • 预期输出:进入游戏模式选择界面。
    • 实际结果:成功进入游戏模式选择界面,无异常。
  2. 选择简单模式(TC002)

    • 步骤:在模式选择界面点击“简单模式”按钮。
    • 预期输出:进入简单模式的游戏界面。
    • 实际结果:成功进入简单模式界面,游戏开始。
  3. 撤销操作(TC005)

    • 步骤:在游戏中进行几次消除操作后,点击“撤销”按钮。
    • 预期输出:撤销上一步操作,图案恢复至之前状态。
    • 实际结果:成功撤销上一步操作,图案状态恢复正常。
  4. 游戏胜利(TC007)

    • 步骤:在规定时间内成功消除所有图案。
    • 预期输出:显示游戏成功界面,并更新排行榜。
    • 实际结果:成功显示胜利界面,排行榜更新正确。
  5. 游戏失败(TC008)

    • 步骤:在规定时间内未完成消除任务。
    • 预期输出:显示游戏失败界面,并更新排行榜。
    • 实际结果:成功显示失败界面,排行榜更新正确。

测试设计评价

本次测试涵盖了游戏的核心功能和用户交互流程,确保了从启动游戏到游戏结束的每一个环节都能正常运作。测试用例设计合理,涵盖了功能性测试和用户体验测试,确保了游戏在不同场景下的稳定性和可靠性。

评价点:

  • 全面性:测试用例覆盖了游戏的所有主要功能模块,包括启动、模式选择、核心玩法、结束界面和排行榜。
  • 准确性:预期输出与实际结果一致,验证了功能的正确实现。
  • 有效性:通过模拟不同用户操作,确保了游戏在各种操作下的稳定性。
  • 可重复性:测试过程可重复执行,确保了结果的一致性。

结论:测试用例有效地验证了游戏功能的完整性和可靠性,满足了程序测试需求,为项目的成功交付提供了有力保障。

4.3 AIGC表格

在本项目中,AIGC(人工智能生成内容)技术被广泛应用于游戏的美术设计和内容生成,极大地提升了开发效率和视觉效果。以下是利用AIGC技术的具体任务分析及其效果评估。

AIGC表格

子任务 借助何种AIGC技术 实现了什么功能 效果如何
背景图片生成 DALL·E 2 生成游戏背景图,增强界面视觉效果 提升了游戏美观度
图案元素设计 ChatGPT o1-preview 生成消除类游戏的图案元素 图案设计简洁直观,符合游戏风格
菜单和按钮设计 ChatGPT o1-preview 设计游戏按钮的图标和样式 界面更加简洁美观
视觉美术优化 ChatGPT o1-preview 优化了界面的配色方案 界面设计更加协调

AIGC技术的优缺点

优点

  • 高效性:能够快速生成高质量的视觉内容,节省了大量的手工设计时间。
  • 多样性:通过不同的AIGC工具,可以生成多种风格和类型的图像,丰富了游戏的视觉效果。
  • 灵活性:能够根据需求调整生成内容的细节和风格,满足不同的设计要求。

缺点

  • 控制精度:生成的内容可能不完全符合预期,需要进行后期调整和优化。
  • 依赖性:过度依赖AIGC工具可能限制了设计师的创意发挥。
  • 成本:某些高级AIGC工具可能需要付费订阅,增加项目成本。

适合应用的方面

  • 背景图像生成:适合用于快速生成多样化的背景图,提升游戏界面的视觉层次。
  • 图案设计:适用于生成消除类游戏所需的各类图案元素,确保图案的多样性和一致性。
  • UI美术设计:适合用于设计按钮、图标等界面元素,提升用户界面的美观度。

不适合应用的功能

  • 复杂交互设计:需要高度自定义和精细控制的交互元素,不适合完全依赖AIGC工具。
  • 逻辑与算法实现:游戏的核心逻辑和算法部分依然需要手工编写和优化,AIGC工具无法替代。

4.4 PSP表格

PSP(Personal Software Process)表格用于对项目任务进行分解,记录预估耗时与实际耗时,并对个人作业的完成过程和最终效果进行评价。

PSP表格

PSP阶段 任务内容 预估耗时(小时) 实际耗时(小时) 评价
计划 项目计划和需求分析 2 2.5 需求分析较为详细,但实际执行时需求有所调整。
设计 界面设计和功能设计 3 3.5 界面设计美观,但部分功能设计需要进一步优化。
设计评审 评审设计方案,修正部分细节 1 1 设计评审过程顺利,及时发现并修正了部分设计缺陷。
代码实现 实现核心功能(消除、撤销、提示) 5 6 核心功能实现较为顺利,但调试耗时较长。
代码评审 评审代码,修正潜在问题 1 1.5 代码评审发现了一些逻辑错误,及时修正。
测试 编写测试用例,执行测试 2 2.5 测试用例全面,但部分测试需要重复执行。
报告与文档撰写 撰写项目报告和用户文档 3 3 报告和文档内容详实,结构清晰。
总结与改进 分析项目过程,总结经验 1 1 总结全面,明确了未来改进的方向。
总计 17 19 总体完成情况良好,部分任务耗时略超预期。

PSP任务评价

在项目实施过程中,通过PSP表格对任务进行了有效的分解和时间管理。大多数任务的实际耗时与预估耗时接近,但在核心功能实现和代码评审阶段,由于遇到了一些意外的技术难题,导致实际耗时略有增加。整体来看,项目的执行过程顺利,完成了预定目标,但在时间预估上仍有提升空间,未来可以通过更详细的需求分析和任务分解,提高时间预测的准确性。

4.5 用户文档

用户文档部分详细介绍了游戏的安装流程、操作指南和常见问题解答,确保用户能够顺利上手并享受游戏。

安装指南

  1. 系统要求

    • 操作系统:Windows 10及以上,macOS 10.15及以上,Linux。
    • Python版本:Python 3.8或以上。
    • Pygame库:确保已安装Pygame库(可通过pip install pygame安装)。
  2. 安装步骤

    • 下载项目压缩包并解压。
    • 打开终端或命令提示符,导航至项目目录。
    • 运行以下命令安装依赖:
      pip install -r requirements.txt
      
    • 运行游戏:
      python main.py
      

操作指南

  1. 主菜单

    • 开始游戏:点击“开始游戏”按钮进入模式选择界面。
    • 设置:点击“设置”按钮调整游戏音量、难度等参数。
    • 排行榜:点击“排行榜”按钮查看历史高分记录。
    • 退出游戏:点击“退出游戏”按钮退出程序。
  2. 模式选择

    • 简单模式:适合新手,游戏节奏较慢,消除难度较低。
    • 困难模式:增加了游戏的挑战性,图案消除难度提升。
    • 地狱模式:为资深玩家设计,游戏节奏极快,消除难度极高。
  3. 游戏界面

    • 图案消除:点击相同图案进行消除,消除三个或更多相同图案得分。
    • 撤销功能:点击“撤销”按钮撤销上一步操作。
    • 提示功能:点击“提示”按钮显示可消除的图案组合。
    • 计时器与分数:实时显示剩余时间和当前得分。
  4. 游戏结束界面

    • 游戏成功:完成所有图案消除,显示“胜利!”信息及得分。
    • 游戏失败:未能在规定时间内完成游戏,显示“游戏结束!”信息及得分。
    • 重新开始:点击“重新开始”按钮进入模式选择界面。
    • 返回主菜单:点击“主菜单”按钮返回主菜单。

常见问题

  1. 游戏无法启动

    • 解决方法:确保已正确安装Python和Pygame库,检查是否有缺失的依赖。
  2. 图案显示异常

    • 解决方法:检查游戏资源文件是否完整,重新下载或解压项目文件。
  3. 排行榜数据未更新

    • 解决方法:确保游戏目录下有leaderboard.json文件,并且程序有写入权限。

4.6 制作心得

在本次项目开发过程中,我深入学习并掌握了Pygame库的使用,了解了游戏开发的基本流程和关键技术。同时,AIGC技术的应用让我认识到人工智能在内容生成和美术设计中的巨大潜力。

最后我想说一句:ChatGPT o1-preview 好使!好使!好使!

posted @ 2024-09-18 23:59  LEML  阅读(93)  评论(0)    收藏  举报