【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【python毕业设计】python基于Pygame的吃金币游戏设计与实现(源码+毕业论文)【独一无二】



一、资源展示

1.1. 论文展示

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈

在这里插入图片描述

1.2. 代码展示

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈


二、开发思路

  1. 导入模块部分

    • 导入了几个 Python 标准库模块以及 Pygame 模块,用于实现游戏所需的各种功能,包括文件操作、系统交互、随机数生成和游戏开发。
  2. 获取历史最高分函数 getScore()

    • 当游戏开始时,检查是否存在历史最高分文件。
    • 如果存在,从文件中读取历史最高分,并返回该值。
    • 如果不存在或文件为空,返回默认值 0。
  3. 保存分数函数 saveScore(score)

    • 在游戏结束时,将当前分数保存到历史最高分文件中。
    • 仅当当前分数超过历史最高分时才进行保存。
  4. 定义农民精灵类 FarmerSprite

    • 表示游戏中的农民角色。
    • 具有移动、绘制等功能。
    • 包括移动方向、位置、速度等属性。
    • 可根据移动方向加载不同的农民图片,实现动画效果。
  5. 定义食物精灵类 foodSprite

    • 表示游戏中掉落的食物。
    • 包括不同种类的食物,如苹果、金币、胡萝卜和炸弹。
    • 具有移动、绘制等功能。
    • 包括食物种类、价值和下落速度等属性。
  6. 显示游戏结束界面函数 GameOver()

    • 在游戏结束时,显示游戏结束的界面。
    • 包括游戏得分、历史最高分等信息。
    • 等待玩家按键或关闭窗口来结束游戏。
  7. 主函数 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位置还是一如既往递增。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈

对于人物的控制可以通过界面中的自定义信息来设置,主要包括技能设置,跳跃、下蹲、左移、右移、使用道具等操作。但是同时,为了获得较好的用户体验,也可以采用鼠标在界面上滑动的方式。完成跳跃、下蹲、左跳、右跳。默认值如下:

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 毕设吃金币 ” 获取。👈👈👈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米码收割机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值