👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、资源展示
1.1. 论文展示
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
1.2. 代码展示
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
二、开发思路
- 导入模块部分:
- 导入了几个 Python 标准库模块以及 Pygame 模块,用于实现游戏所需的各种功能,包括文件操作、系统交互、随机数生成和游戏开发。
- 获取历史最高分函数
getScore()
:
- 当游戏开始时,检查是否存在历史最高分文件。
- 如果存在,从文件中读取历史最高分,并返回该值。
- 如果不存在或文件为空,返回默认值 0。
- 保存分数函数
saveScore(score)
:
- 在游戏结束时,将当前分数保存到历史最高分文件中。
- 仅当当前分数超过历史最高分时才进行保存。
- 定义农民精灵类
FarmerSprite
:
- 表示游戏中的农民角色。
- 具有移动、绘制等功能。
- 包括移动方向、位置、速度等属性。
- 可根据移动方向加载不同的农民图片,实现动画效果。
- 定义食物精灵类
foodSprite
:
- 表示游戏中掉落的食物。
- 包括不同种类的食物,如苹果、金币、胡萝卜和炸弹。
- 具有移动、绘制等功能。
- 包括食物种类、价值和下落速度等属性。
- 显示游戏结束界面函数
GameOver()
:
- 在游戏结束时,显示游戏结束的界面。
- 包括游戏得分、历史最高分等信息。
- 等待玩家按键或关闭窗口来结束游戏。
- 主函数
main()
:
- 游戏的主要逻辑实现部分。
- 初始化游戏窗口、音乐、时钟等参数。
- 实例化农民角色和食物组。
- 处理游戏中的事件,如键盘事件和退出事件。
- 控制农民角色的移动,并实现与食物的碰撞检测。
- 控制食物的生成、移动和消失。
- 在屏幕上显示游戏的分数、生命值和剩余时间。
- 循环更新屏幕,并控制游戏的帧率。
三、功能展示
登录界面的主要采用PyQT5来设计,QT5是通用的基于高性能的Qt的GUI控件集。能够跨平台运行在Linux、Window和Mac OS系统上。使用信号槽机制进行通信。对Qt库进行完全封装。可以使用成熟的IDE进行界面设计,并自动生成可执行的Python代码。提供一整套种类齐全的窗口控件。
登录界面的设计风格采用无头设计的形式,主要包含登录、注册、退出,用户点击推出以后,会自动退出,界面消失。登录成功后会进入游戏当中。用户也可以根据自己的需求建立自己的个人账号。
登陆界面主要包含登录和注册,游戏界面为用户提供了默认的登录账号和密码均为admin,用户通过注册,可以注册自己的账号,并且可以将账号信息,存储在account.db数据库文件中,存储的形式是持久化储存,重新启动程序后,用户仍能够登录自己的账号。
登录界面加入了容错机制,如果用户名或密码为空,会报错提示用户输入正确的账号信息;如果用户输入了错误的账号密码,也会报错提示。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
图3.5 吃金币游戏登录账号错误提示
图3.6 吃金币游戏登录账号为空提示
注册界面,对用户名进行了判断,如果用户名存在数据库中,会提示用户数据库中存在用户名,请重新注册账户;如果用户名为空,也会提示输入正确的用户名;用户名只可以使用字母、数字的形式进行注册,如果非法符号,会导致注册不成功,并报错提示用户。
图3.7 吃金币游戏注册用户名错误提示
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
同时,加入了密码二次确认机制,如果两次密码不一致,会提示用户重新输入密码;密码不可为空,为空也会出现报错。
图3.8 吃金币游戏密码输入不一致提示
图3.9 吃金币游戏密码输入为空提示
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
该游戏中的物品光是游戏人物和地图的话还是远远不够的。添加好游戏人物和地图之后,就应该将游戏中所应该出现的道具添加到游戏界面上去。
在道具管理模块中,应该有对道具数据的初始化,以及道具的效果及持续时间管理,障碍物也应该算到道具管理模块,只不过是负效果道具。道具管理模块中应该以道具类型的数量区分来管理道具。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
主要的道具有以下种类、效果及管理方法:
萝卜道具:主要的加分道具,得到一个道具可以加1分,数量众多,在模块中以数组的形式进行管理。
苹果道具:特殊道具,得到一个可以加3分。数量较少所以以单一实例的形式进行管理。
炸弹道具:特殊道具,得到一个积分清0。数量较少,所以以单一实例的形式进行管理。
金币道具:特殊道具,得到一个可以加5分。数量较少所以以单一实例的形式进行管理。
(1)道具乱放
for coin in coin_arr: coin.set_position(-2 + math.random()*4, 0, posz) posz += 2 map.addchild(coin)
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
(2)直线型摆放
left_or_right.number = math.random() if left_or_right > 0.5: posx.Number = -2 posx.Number=2
这种摆放方式首先进行一次随机,来决定是左边一条直线还是右边一条直线,然后X方向位置不变,Z方向位置递增。
(3)Z字型摆放
left_or_right.number=math.random() posx.number= -2.5 + math.random() * 5 switchz.number = 1 for coin in coin_arr: coin.set_position(posx, 0, posz) posz += 2 if(posx >= 2) switchz = -1 elif posx <= -2 switchz = 1 posx += switchz map.addchild(coin)
这中摆放先随机一个X位置,然后X位置递增,X位置的绝对值超过2时,X位置便开始递减,从此往复,Z位置还是一如既往递增。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈
对于人物的控制可以通过界面中的自定义信息来设置,主要包括技能设置,跳跃、下蹲、左移、右移、使用道具等操作。但是同时,为了获得较好的用户体验,也可以采用鼠标在界面上滑动的方式。完成跳跃、下蹲、左跳、右跳。默认值如下:
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈