软件工程第二次个人作业

软件工程 https://edu.cnblogs.com/campus/fzu/SE2024
作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253
作业目标 用python实现“羊了个羊”风格小游戏
学号 102201138

项目展示:基于Pygame的Match-Three游戏

   在这篇博客中,我将展示我在Python和Pygame下开发的Match-Three风格消除游戏的项目成果。以下是该项目的详细介绍,包括前端设计、特色功能、技术实现、测试结果及我的学习心得。

仓库链接

https://github.com/littlyellowduck/littlyellowduck/tree/master

前言

   在9月15日的时候,我对python还一无所知,大概用了三天时间,实现了python学习的入门到入土。写完游戏以后,我现在看到代码就想吐。因为这个,我的中秋假期直接蒸发。写这个游戏我收获很多,比如python知识的学习,比如和gpt交流的能力得到强化。只要进行有效的沟通,说清楚自己的需求,gpt都能大概实现。使用的感受是,如果不学点技术的话,迟早会被ai取代。

💡1. 游戏功能实现

🎨界面设计
使用Pygame库设计游戏界面,包括主菜单、游戏界面和结束界面。

  • 主色调:在游戏的设计中,我选择了明亮的色调,如淡黄色,水红色和鲜艳的绿色,以此渲染“圣诞节”的氛围,并增强游戏的视觉吸引力。这些颜色不仅提升了游戏的趣味性,也让游戏界面看起来更加生动活泼。

  • 卡片设计:游戏中的卡片采用了圆角矩形设计,并加入了3D效果,使其看起来更具立体感和现代感。每种类型的卡片都有独特的图案和色彩,我特地找的很可爱的圣诞节图标,便于玩家区分和匹配。

  • 主菜单和选择菜单 :

  • 游戏界面

  • 结束界面

🤖玩法介绍

  • 1.实现图案的生成与分层摆放,确保图案能够被合理匹配和消除: 与“羊了个羊”差不多,多图层随机摆放,被覆盖的灰色图片不可以点击。

  • 2.玩家通过点击选择图案并消除,当所有图案被消除时游戏结束: 点击图案移入收集框,三个相同的可以消除

  • 3.设置倒计时机制,时间结束或框满时游戏失败: 倒计时90秒,收集框上限为8,Hard模式上限为7。

  • 4.难度设置:随机生成图案摆放顺序,设置三种不同的关卡以增加游戏挑战性。
    设置三种不同的模式“Easy”、“Normal”、“Hard”

  • 简单模式

  • 正常模式

  • 困难模式

  • 💡特色功能

  • 倒计时器:游戏开始时,倒计时器会启动。如果时间耗尽,游戏将结束并显示失败消息。这一功能增强了游戏的紧张感和挑战性。

  • 暂停按钮:在游戏界面添加了一个“PAUSE”按钮,点击后可以暂停倒计时,帮助新玩家快速上手。

  • 时间暂停

  • 计分系统:每成功匹配三张相同类型的卡片,玩家将获得3分。游戏结束时会显示最终得分,并记录到排行榜中,供玩家查看历史成绩。

  • 灰度转换:我做了两组图片,一组是正常颜色,一组是灰色,当一张图片被其他图片盖住时,他会变灰,不能点击;当覆盖解除时,图片变亮,可以点击。

  • 过渡效果:为了提高游戏的视觉效果,加入了延迟消除等过渡效果和动态背景,使得界面切换更加平滑自然。

  • 素材来源:

    以上素材均来源于免费网站,无侵权问题。


🔧 2. 技术与算法实现

技术实现

  • 游戏逻辑:使用Python编写游戏逻辑,通过Pygame库管理游戏的渲染和事件处理。实现了游戏的核心功能,包括卡片的匹配、分数统计和游戏状态管理。
  • 算法设计:采用随机生成算法保证游戏中的卡片布局,同时确保每种类型的卡片数量为3的倍数,以便实现匹配功能。算法中加入了检查机制,以防止生成的卡片数量与游戏网格不匹配的问题。

特殊算法

1. 图片随机分布算法

描述:

  • 这个算法用于在游戏网格中随机分布图像,并确保每种图像的数量是3的倍数,同时处理空白插槽。

实现步骤:

  1. 初始化: 创建一个空的2D数组,大小为rows x cols
  2. 生成图像列表: 根据图像类型和数量生成一个图像列表,其中每种图像的数量都是3的倍数。
  3. 随机分布: 使用随机打乱列表的方式,将图像和空白插槽随机分布到网格中。
  4. 填充空白: 如果生成的图像总数小于网格总数,计算并填充空白插槽,确保总数不超过网格的总数。

示例代码:


2. 其他函数

描述:

  • 我写了非常非常非常多的函数实现各种各样的功能,见代码和注释。

示例代码:


3. 编写了两个类

menu类和tile类:


🧪 3. 测试样例与结果

测试样例
在进行区分灰色图和亮色图时老是出现各种各样的错误,于是进行测试,在点击时输出他们的名字,以示区分:

  • 功能测试:对游戏的各项功能进行测试,包括卡片匹配、计分系统、倒计时器和排行榜显示。确保每个功能都能够按预期工作。
  • 性能测试:测试游戏在不同分辨率下的表现,检查游戏的流畅度和响应速度。
  • 用户体验测试:邀请玩家进行试玩,收集他们的反馈和建议,以便进一步优化游戏体验。

测试结果

  • 功能测试:所有核心功能运行正常,没有发现重大Bug。游戏中的计分系统能够准确显示分数。
  • 性能测试:游戏在常见的分辨率下表现良好,没有出现明显的卡顿现象。
  • 用户体验测试:玩家反馈游戏界面简洁明了,操作直观,倒计时器和帮助按钮的设计得到了好评。

💬 4. AIGC使用感想

在项目开发过程中,我使用了AIGC工具来生成游戏中的图像和设计元素。以下是对这些工具的总结和感想:

优点:

  • 效率高:AIGC工具能够快速生成多种设计选项,大大节省了手动设计的时间。
  • 激发创意:自动生成的设计提供了多样化的创意选择,有助于突破传统设计思维。
  • 操作简单:工具界面友好,操作便捷,能够快速获得多个设计方案。

缺点:

  • 理解不足:有时生成的设计与预期存在差距,需要进一步调整以符合实际需求。
  • 细节控制有限:尽管工具能够生成创意,但对复杂细节的控制能力仍有不足,需要专业软件进行后期处理。
  • 独特性差:生成的设计可能与其他用户的设计类似,需要进行个性化处理以确保独特性。

AIGC表格任务

子任务 借助何种AIGC技术 实现了什么功能 效果如何?
游戏逻辑设计 AIGC代码生成(如GitHub Copilot) 生成游戏的基本逻辑代码,包括图像匹配、计分等功能 提高了开发效率,减少了编码时间,但需要手动检查和调整生成代码的正确性
图像生成和处理 AIGC图像生成(如DALL·E) 创建游戏中的图像资产,如游戏图标、背景等 图像质量较高,能够快速生成多样化的图像,但可能需要进一步优化和调整以适配游戏需求
UI/UX设计 AIGC设计辅助工具(如Figma的AI插件) 设计和优化游戏的用户界面和用户体验 提供了设计灵感和初步设计方案,但最终的设计还需要人工调整以符合游戏的实际需求
文本生成 AIGC文本生成(如GPT-4) 生成游戏内文本,如帮助提示、游戏说明、错误提示等 生成的文本自然流畅,提升了游戏的可玩性,但需要确保文本内容准确和适当
测试和调试 AIGC代码分析和调试(如CodeQL) 自动检测代码中的潜在错误和性能问题 帮助发现和修复了一些代码问题,但仍需要人工检查和测试以确保稳定性和准确性
游戏优化建议 AIGC优化建议(如AI-powered analytics) 提供游戏优化的建议和改进方案 提供了有用的优化建议,但最终的实施和验证还需要开发者的判断和调整

📈 5. PSP表格与任务分解

在项目开发过程中,我使用PSP表格对任务进行了详细的分解,并记录了时间预估与实际耗时。以下是对个人作业完成过程的评价:

任务 时间预估 实际耗时 评价
需求分析 4小时 4.5小时 需求分析准确,但时间略超出预期。
设计与实现 17小时 18小时 实现过程顺利,设计符合预期。
测试与优化 8小时 7小时 测试全面,优化及时有效。
文档编写与总结 3小时 3小时 文档编写详细,略超出时间预估。

评价

  • 项目完成情况:整体上,项目按时完成且质量较高。虽然在文档编写阶段略有延迟,但对项目的各个方面进行了详细记录和总结。
  • 改进建议:未来在项目规划阶段,可以更精确地预估时间,并提前安排测试和优化的步骤,以确保项目按时交付。

📈 6. 学习心得记录

项目学习记录表格

技术/算法 具体内容 学到的知识 心得体会
Pygame 游戏开发框架,处理图像、声音和用户输入 学会了如何使用Pygame创建游戏界面、处理用户输入和绘制图形 Pygame 简单易用,但需要注意性能优化,特别是在图像处理和事件处理上
Python 编程语言,用于实现游戏逻辑和功能 提高了 Python 编程能力,尤其是在游戏开发中的应用 Python 的灵活性和强大库支持非常适合快速开发原型和游戏
随机分布算法 用于随机分布图像并确保每种图像数量为3的倍数 理解了如何处理和生成随机分布的数据,特别是在游戏网格中 随机算法的设计需要考虑边界条件,确保生成的数据符合游戏逻辑
匹配算法 查找并消除相邻的相同图像 掌握了广度优先搜索(BFS)或深度优先搜索(DFS)在图像匹配中的应用 图像匹配的效率和准确性直接影响游戏体验,需要精心设计和优化
倒计时管理 实现游戏倒计时功能,记录游戏时间 学会了如何在游戏中实现计时器和处理时间到期的逻辑 倒计时功能对游戏体验至关重要,需要确保逻辑准确并处理好超时情况
评分系统 计算和记录玩家分数 理解了如何在游戏中实现评分和排行榜功能 评分系统可以显著提高游戏的竞争性和趣味性,需要保持分数计算的公平性
排行榜系统 记录和展示游戏排行榜 学会了如何排序和展示排行榜,提升玩家参与感 排行榜可以激励玩家,提高游戏的长期吸引力,但要注意数据的安全性和公平性
posted on 2024-09-17 23:29  黄俊瑶  阅读(72)  评论(0)    收藏  举报