软件工程第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253 |
这个作业的目标 | 活学活用 |
学号 | 102202154 |
仓库链接:
项目展示
- 项目介绍
俄罗斯方块游戏为前苏联科学家阿列克谢·帕基特诺夫开发的教育用软件,是家喻户晓老少皆宜的大众游戏,普及程度极高。上手简单,难度却不低,具有数学性、动态性。
- 游戏开始界面
该画面呈现的是一个经典游戏“俄罗斯方块”的变种版本——“俄罗斯方块X版v1.0”的游戏界面预览。界面设计简洁而富有科技感,以蓝色为基调,营造出一种宁静而深邃的游戏氛围。
画面顶部,一个醒目的黄色徽章图标与游戏名称“俄罗斯方块X版v1.0”并列,既表明了游戏的身份,又增添了视觉上的吸引力。徽章图标的存在,可能预示着这款游戏有着不同于传统俄罗斯方块的特色玩法或主题设定。
紧接着徽章下方,是一个黑色的矩形区域,这里是游戏的核心提示区。中央的“开始游戏”四个大字以白色呈现,字体粗大,引导玩家快速进入游戏。这一设计简洁明了,让人一目了然。
整个游戏界面背景上散布着一些白色和灰色的几何图形,这些图形不仅美化了界面,还可能与游戏的主题或玩法密切相关。它们以抽象的形态出现,让人在享受游戏乐趣的同时,也能感受到一种视觉上的艺术享受。
- 操作说明
在“开始游戏”按钮的右侧,排列着四个白色的小按钮图标,分别对应着游戏操作中的关键指令:“旋转”、“向左移动”、“向右移动”和“加速下移”。这些图标不仅直观展示了游戏的基本操作方式,还通过颜色的对比和排列的紧凑性,强调了游戏操作的便捷性和高效性。
在“开始游戏”按钮的左侧,是一段详细的操作说明文字,尽管由于分辨率限制无法完全看清所有内容,但可以看到包括“Tab”键用于旋转方块、“←”和“→”键分别控制向左和向右移动、“↓”键加速下移等关键信息。此外,还提到了“空格”键用于超速下移和“ESC”键用于暂停游戏的功能,这些设置充分考虑了玩家的操作习惯和游戏流畅性的需求。
- 游戏运行过程中
- 游戏结束
这张图片展示的仍然是俄罗斯方块游戏的一个场景,但是与之前相比,这里出现了一个新的提示:“游戏结束!”这个提示通常意味着玩家已经无法继续消除行或者堆叠方块,导致游戏失败。
在游戏界面上方,我们可以看到玩家在这局游戏中获得了518分,并消除了3行,等级为1级。右侧显示的下一个方块现在变成了紫色的T型。
中间部分是一个黑色的对话框,上面有白色的字,写着“开始游戏”和“退出”,这表明游戏已经结束了,给玩家两个选项:重新开始或离开游戏。
项目介绍
- 功能需求
(一)图形与控制
本游戏为单人游戏,游戏界面分三部分:主游戏区,显示变化、落下以及堆叠固定的方块;游戏信息区,显示游戏成绩和下个方块;最后是操作说明区。
方块下落时,可通过指定按钮对该方块进行翻转、左右移动以及加速下移。
(二)游戏规则
随机给出不同的形状(一字形、田字形、L形、反L形、Z形、反Z形、T字形),下落填充给定区域,填满一行消掉记分,普通下落不计分,加速下落记分,当达到一定分数时提升游戏等级。
- 逻辑流程图
- 用到的素材
本游戏用到的素材有声音、图形和字体,图形素材让游戏界面更立体美观,背景音乐和操作提示音提升了游戏体验和乐趣。
(一)声音素材
背景音乐background.wav、不能旋转提示音can_rotate.wav、旋转提示音tilt_rotate.wav、加速下降提示音speed_mode.wav,均来自于网络。
(二)图形素材
游戏背景图片bkgrnd.jpg、bkgrnd0.jpg、bkgrnd1.jpg、bkgrnd2.jpg、bkgrnd3.jpg;图标hhtetris.ico均根据网络图片二次创作,背景图二次创作的源文件为bkgrnd.psd。



bkgrnd.jpg\bkgrnd0.jpg\bkgrnd1.jpg



bkgrnd2.jpg\bkgrnd3.jpg\hhtetris.ico
(三)字体
Aa霸道楷体Aabadaokai.ttf,用于显示游戏信息,来自于字库网;
中文简黑体simhei.ttf,来自于windows系统自带。
AIGC表格
学习内容 | 心得体会 |
---|---|
游戏逻辑实现 | 在实现俄罗斯方块的基本逻辑时,我学会了如何管理游戏状态,如方块的旋转、移动和锁定等。这些逻辑的编写需要考虑各种边界条件,确保游戏流畅且无bug。 |
用户界面设计 | 设计直观易懂的UI对于提高用户体验至关重要。我学到了如何布局界面元素,比如得分板、下一个方块预览区等,让玩家一目了然。 |
算法优化 | 为了使游戏运行更加高效,我研究了不同的算法来优化方块的放置和消除过程。例如,在检查完整行是否可以消除时,使用了数组遍历和位运算等技巧来提升性能。 |
键盘事件处理 | 实现键盘事件监听功能让我了解了如何响应用户的输入,并及时更新游戏状态。这涉及到对事件循环的理解以及如何在适当的时候捕获按键动作。 |
动画效果 | 添加动画效果使得游戏更加生动有趣。我学会了如何通过定时器来控制方块下落的速度,并且在方块锁定后添加消除行的动画。 |
游戏难度调整 | 游戏难度随着玩家消除的行数增加而上升,我实现了根据得分动态调整方块下落速度的机制,这样既保证了游戏的挑战性,也提高了可玩性。 |
软件工程实践 | 在项目开发过程中,我应用了软件工程的最佳实践,如模块化编程、版本控制和代码复审等,这对于保持代码质量是非常重要的。 |
PSP表格
序号 | 任务描述 | 预估耗时(小时) | 实际耗时(小时) | 差异(小时) |
---|---|---|---|---|
1 | 项目启动与规划 | |||
1.1 | 确定项目目标与范围 | 2 | 2 | 0 |
1.2 | 组建开发团队 | 1 | 1 | 0 |
1.3 | 制定开发计划与时间表 | 2 | 3 | +1 |
2 | 需求分析 | |||
2.1 | 收集与整理游戏需求 | 3 | 4 | +1 |
2.2 | 编写需求规格说明书 | 2 | 2 | 0 |
3 | 设计 | |||
3.1 | 设计游戏架构 | 4 | 5 | +1 |
3.2 | 设计用户界面(UI) | 3 | 4 | +1 |
3.3 | 设计用户体验(UX) | 2 | 2 | 0 |
3.4 | 设计游戏逻辑与算法 | 5 | 6 | +1 |
4 | 编程与实现 | |||
4.1 | 搭建开发环境 | 2 | 2 | 0 |
4.2 | 编写基础框架与模块 | 6 | 8 | +2 |
4.3 | 实现方块生成与下落 | 4 | 5 | +1 |
4.4 | 实现方块旋转与移动 | 6 | 7 | +1 |
4.5 | 实现游戏得分与等级系统 | 3 | 3 | 0 |
4.6 | 实现游戏结束与重新开始功能 | 2 | 2 | 0 |
4.7 | 集成音效与音乐 | 2 | 3 | +1 |
5 | 测试 | |||
5.1 | 单元测试 | 4 | 5 | +1 |
5.2 | 集成测试 | 6 | 7 | +1 |
5.3 | 用户接受测试(UAT) | 3 | 3 | 0 |
5.4 | 修复测试中发现的问题 | 2 | 2 | 0 |
6 | 优化与迭代 | |||
6.1 | 性能优化 | 2 | 2 | 0 |
6.2 | 用户体验优化 | 2 | 3 | +1 |
6.3 | 根据反馈进行迭代 | 2 | 2 | 0 |
7 | 文档编写与发布 | |||
7.1 | 编写用户手册 | 1 | 1 | 0 |
7.2 | 编写开发者文档 | 1 | 1 | 0 |
7.3 | 准备发布材料 | 1 | 1 | 0 |
7.4 | 发布游戏到应用商店 | 1 | 1 | 0 |
总计 | 45 | 54 | +9 |
AIGC表格任务
序号 | 任务描述 | 预估可利用AIGC | 实际利用AIGC | AIGC技术优缺点及适用/不适用场景 |
---|---|---|---|---|
1 | 项目规划与需求分析 | 否 | 否 | 无需AIGC,需人工定义游戏目标和需求。 |
2 | 游戏界面初步设计 | 是 | 可能 | 优点:快速生成设计草图;缺点:质量不稳定,需人工调整。适用于界面设计灵感启发。 |
3 | 音效与音乐创作或选择 | 是 | 可能 | 优点:快速生成基础音效;缺点:缺乏情感,需人工编辑。适用于背景音乐和简单音效生成。 |
4 | 游戏逻辑设计与编程 | 否 | 否 | 不适合AIGC,需精确编程和逻辑判断。 |
5 | 编程实现游戏界面与交互 | 否 | 否 | 不适合AIGC,需精确控制界面元素和交互逻辑。 |
6 | 游戏测试与调试 | 否 | 否 | 无需AIGC,需人工测试和修复bug。 |
7 | 游戏优化与性能提升 | 否 | 否 | 不适合AIGC,需深入理解游戏性能和优化技术。 |
8 | 用户手册与开发者文档编写 | 否 | 否 | 无需AIGC,需准确描述游戏功能和开发细节。 |
9 | 发布准备与市场推广 | 否 | 否 | 无需AIGC,需人工准备发布材料和推广策略。 |
10 | AIGC技术总结 | N/A | N/A |