两百行Python代码带你打造一款《天天酷跑》游戏!思路清晰,通俗易懂!

Python游戏汇总:三十个pygame游戏代码【附源码免费分享】 导语 哈喽哈喽!我是木木子! ​ 每日更新游戏不知不觉已经很多啦~ Python兴趣始于游戏,所以更新的文章中基本上都是游戏代码居多。 然后我疯狂的找各种小游戏、小脚本、小项目的教程源码什么的,然后自己进行学习、制作、修改等等。 ​ ​ 于是我就疯狂的找呀找呀学呀学呀,现在就有一大堆,哈哈哈,所以今天是准备稍稍的整理下,感觉比较乱。 提示:爱学习哦,不要沉迷游戏,平时打发一下无聊时间最好啦 文章末尾有惊喜有全部的游戏代码一键可免费领取哈! ​正文 往期更多文章欢迎阅读: 1.成语接 阅读详情

最近一段时间,小编发现已经好久没有给大家带来趣味游戏的案例展示了。刚好小编趁着周末写了一个《天天酷跑》的游戏,因此拿来跟大家一起分享,和大家一起来重温经典的酷跑游戏。

准备开发环境

 

俗话说,“工欲善其事,必先利其器”,我们先来介绍一下本次我们用到的库有哪些。(需要注意的是,由于很多的小伙伴都会反映很多库安装之后,会出现报错,找不到相应的模块),这是因为库版本的不同,所以跟大家详细的介绍一下程序所使用的各个环节及其对应的版本,这次我们使用的工具和其版本号如下所示:

PyCharm:2019.1.3

python3.5+,其中内置sys和random库

pygame:1.9.6

 

 

02

程序整体思路

 

介绍完我们的基础环境之后,接下来我们来介绍一下今天游戏设计的思路。

1).游戏初始化

  • 利用pygame创建特定大小的游戏窗口。

  • 显示游戏的初始界面,提示用户开始游戏

  • 在游戏界面中设置背景图片,并显示人物、障碍物和金币等物体。

2).游戏控制

  • 人物自动向前奔跑,按空格键控制人物跳跃。

  • 利用addObstacle函数创建障碍物。

  • 利用updateScreen函数不断更新界面中物体的显示。

3).碰撞检测

  • 利用ListenKeyBoard函数监控用户的键盘输入,并检测人物和障碍物金币等是否碰撞。

  • 人物和障碍物碰撞:当检测到人物和障碍物的位置信息有交集时,判断为碰撞,人物生命值减一,障碍物消灭。

  • 人物和金币碰撞:当人物撞到金币时,金币消灭,得分+100。

  • 当人物成功躲避障碍物时,得分+10。

  • 利用judgeState函数来判断游戏是否结束。

  • 游戏结束时显示最终得分,并提示用户按“Enter”键重新开始游戏。

 

 

03

带你一步一步写游戏

 

1).首先,整体看一下程序是如何实现初始化的:

 

程序是由pygame库为主体来实现的,首先程序中制定了游戏窗口的大小,以及程序不同模块的背景图,例如障碍物的图片,游戏进行时的背景图和游戏结束时的背景图。

 

2).游戏开始的界面

当运行程序后,程序首先会运行self.startGame这个函数,并给出游戏的介绍界面,提示用户开始游戏。

 

self.startGame函数中,首先绘制了游戏的初始界面,然后开始监控用户的键盘输入,当用户输出“ESC”键的时候,则直接退出游戏,否则的话,就进入真正的游戏。初始化的界面如下图所示:

 

3).创建各类物体

进入游戏之后,我们就需要创建人物、障碍物和金币以及游戏背景的设置。由于人物和障碍物已经游戏背景都通过类的方式来创建的,且它们的类形式非常类似,这里我们就以障碍物和金币类来进行简单的讲解。

 

在障碍物类中,类的初构造函数中,主要设置了类对象的显示图像(self.surface)、坐标信息(self.x、self.y)和长宽信息(self.w、self.h)。而self.getPos函数用来返回当前对象的坐标和长宽信息,self.judgeCollision函数则是用来进行物体的碰撞检测。

 

在程序中,通过self.addObstacle函数就可以添加障碍物对象,并随机设置障碍物在游戏界面中所处的高度位置。在游戏中障碍物目标如下图所示。

 

上图中,被红色框框住的就是障碍物,可以看到,障碍物之间有着不同的高度坐标,以及不同的间隔宽度,这样才能为跑酷人物带来不同的难度挑战。人物则是被蓝色框框住的目标,而位于画面正上方,被绿色框框住的则是“剩余生命值和得分”的信息。

 

4).用户键盘监控和碰撞检测

通过对于用户的键盘输入监控,来控制人物的运动,例如是跳跃还是退出游戏。

 

上图中,我们可以看到当用户输入空格键时,如果人物当前的state是0,则人物要完成一级跳,如果人物当前的state是1,则人物要完成二级跳。如果当前self.game_state是1,表示人物已经死亡,那么当用户输入“Enter”键时,游戏将重新开始。

 

对于人物和障碍物或者是金币的碰撞检测,则是通过障碍物类中的self.judgeCollision函数来进行判断。

 

如果判断是金币的话,则用户的得分+100,金币被吃掉。否则的话,用户的生命值减一,障碍物消失掉。

 

5).游戏界面不断刷新和判断游戏结束

通过self.updateScreen函数,可以实现游戏界面的不断的刷新。

 

上述的程序中,分别对游戏背景的位置、剩余生命值和得分的数值以及障碍物的数量和人物的运动状态进行更新后,就可以利用screen.blit函数在游戏界面中展示出来,通过不断的更新,让游戏看起来就是不断的运动的过程。

 

通过self.judgeState函数,来判断游戏是否结束,如果游戏结束了,则会展示出用户所获得分,并提示用户按“Enter”键重新开始游戏。

 

 

以上就是小编今天为大家带来的关于跑酷程序的分享和讲解,有兴趣的同学,可以在公众号后台找小助手源码。感受一下经典的跑酷游戏所带来的乐趣吧。

如何获取源码:

 

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

带你用Python制作一个经典必收藏的游戏:地铁跑酷(含完整代码) 你一定玩过的游戏:地铁跑酷,图片大家可以自己去找找,或者私信我找我要都OK 阅读详情

相关推荐

连连看素材.rar

连连看素材,包括有PNG格式(45*45)、BMP+蒙版格式(32*32)

贪吃蛇c++代码

请用安装了TC图形库的编译器运行,如果你有vs没有TC库,请点这个 安装TC库点这里 如果你连VS也没有的话,点这里 安装vs点这里 图片附上 运行代码前,请先将vs的属性里面的高级设置为多字节字符集,而且要关闭SDL Code #include<iostream> #include<math.h> #include<string.h> #include<easyx.h> #include<graphics.h> #include<std

YSJ367635984的博客 1454

STM32F407控制舵机

STM32F407控制舵机运行 使用STM32F407控制舵机,首先来看下舵机图片 [黑红白,黑线接GND,红线接VCC,信号线接白色线(有的舵机线的颜色不同,例如褐色红色橘色,仅颜色不同接法还如上述)] 舵机需要信号的周期为20ms,即频率为50Hz。 接下来正式操作: 步骤一:STM32F4程序(本次程序的PWM信号产生的周期频率由定时器TIM14通道1产生(TIM14_CH1),想要使用其它定时器也没关系下面会讲到) #include "pwm.h" void TIM14_CH1_PWM_In

Ievn_Hare的博客 1万+

用Python写几个小游戏(附源码)

用python做的几个小游戏

hxb002131的博客 10万+

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

深入剖析一个卷积块(ConvBlock)

深入剖析一个卷积块(ConvBlock)

qq_45670407的博客 1921

两百行Python代码带你打造一款《天天酷跑》游戏!通俗易懂,思路清晰!

最近一段时间,小编发现已经好久没有给大家带来趣味游戏的案例展示了。刚好小编趁着周末写了一个《天天酷跑》的游戏,因此拿来跟大家一起分享,和大家一起来重温经典的酷跑游戏。 准备开发环境 俗话说,“工欲善其事,必先利其器”,我们先来介绍一下本次我们用到的库有哪些。(需要注意的是,由于很多的小伙伴都会反映很多库安装之后,会出现报错,找不到相应的模块),这是因为库版本的不同,所以跟大家详细的介绍一下程序所使用的各个环节及其对应的版本,这次我们使用的工具和其版本号如下所示: PyCharm:2019.1.3.

爬遍所有网站 1768

similarity network fusion for aggregating data types on a genomic scale

基因组规模上的聚合数据类型的相似性网络融合 摘要:         近期的技术已经使收集不同类型的全基因组数据十分划算,结合这些数据去创建一个给定的疾病或生物过程的一个全面视图的计算方法是有必要的。相似网络融合(SNF:similarity network fusion)通过创建每一个可利用的数据类型的样本(如,患者)的网络可以解决这个问题。例如,创建一个给定一群患者疾病的全面视图,SNF计算

augustar学习笔记 7869

十行Python代码替换证件照背景颜色

本文教大家通过Python程序替换证件照背景颜色,以后更换证件照背景就不会再苦恼了。思路:先去掉原照片的背景颜色再添上新的背景颜色步骤很简单,思路清晰,操作起来也很简单,十行代码就可以搞定...

cainiao_python的博客 1409

Python爬虫实战:如何爬取12306列车信息

本文介绍了如何使用Python编写爬虫,抓取12306列车信息。我们讲解了如何分析12306的列车数据接口,如何发送HTTP请求,解析返回的JSON数据,并将数据保存到本地文件中。我们还讨论了如何绕过反爬虫机制,如使用随机User-Agent和设置请求延时。通过这个实战项目,你应该掌握了如何爬取并解析来自公共API的数据,同时提高了你的爬虫技能。这些技能不仅适用于12306列车信息抓取,也可以广泛应用于其他需要抓取JSON数据的网站。

2201_76125261的博客 1922

微信小程序 - 实现大文件上传分片/切片+本地选择文件上传超大文件,小程序大文件切片上传+断点续传+上传进度条+失败自动重传完整运行示例源码,支持图片、视频、文档各种文件(支持上传单个文件或批量上传)

微信小程序实现大文件上传,实现分片大文件上传,微信小程序 分片 断点续传 大文件上传,微信小程序实现大文件上传 分片上传 进度条,小程序文件分片上传,微信小程序如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,微信小程序实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,微信小程序wx.uploadFile,小程序上传视频,小程序上传文档,实现大文件上传(切片上传)实现大文件上传到服务器教程,支持批量多

🏆 前端领域优质创作者 1万+

微软出Django教程啦!

周围很多小伙伴都在学Python。Python功能强大,语法简单,可以干很多事情。比如自动化测试,运维,机器学习,数据分析,金融股票量化分析,其实很多小公司或者大厂的运维部门都用Pytho...

cainiao_python的博客 377

STC单片机使用FatFs文件系统读取SD卡指定文件内容

STC单片机使用FatFs文件系统读取SD卡指定文件内容

perseverance51博客 2744

八爪鱼,国内领先的爬虫云采集工具平台,为许多大型公司,政府,提供数据服务

如何成为一名优秀的爬虫工程师?(文末附带工作机会) 作者:keven 发布时间:2018/4/16 18:24:54 2814 人已阅读   摘要:过完年后到现在,基本每周面试十几个同学的节奏,慢慢在面试过程中,我觉得在爬虫工程师这条路上,其实很多同学是不清不楚的。 毕竟大数据行业在国内兴起也就这几年,而爬虫工程师也由此从幕后走向台前,不清楚整个大行业的话,其实只能看到很片面的价值。 过完年...

湾区人工智能 4156

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9097

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

边玩边学,30个Python小游戏(含源码)

大家好,我是小F~经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对?比方说,你有没有想过,可以通过打游戏来学编程?今天我想跟大家分享30个Python小游戏,教你如何通过边打游戏边学编程!相关文件及代码都已上传,公众号回复【游戏】即可获取。接下来就一起来看看吧~1、飞机大战 源码分享:importrandom importpygame fr...

法纳斯特 4万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python编程游戏代码大全,python简单的小游戏代码

大家好,本文将围绕python编程一个最简单游戏代码展开说明,20行python代码的入门级小游戏是一个很多人都想弄明白的事情,想搞清楚python游戏编程入门游戏代码需要先了解以下几个事情。

阿发狗伪原创 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python游戏代码大全可复制,python小游戏代码大全

大家好,本文将围绕python游戏编程入门游戏代码展开说明,python游戏代码大全可复制是一个很多人都想弄明白的事情,想搞清楚python小游戏代码大全需要先了解以下几个事情。。

2301_81900386的博客 9117

一口气用Python写了13个小游戏(附源码)

一口气用Python写了13个小游戏(附源码)

一名正义的白帽黑客 2万+

c++贪吃蛇源代码

if(nexthead->x==food->x && nexthead->y==food->y)//如果下一个有食物//if(nexthead->x==food->x && nexthead->y==food->y) //有食物。if(nexthead->x==food->x && nexthead->y==food->y)//有食物。if(nexthead->x==food->x && nexthead->y==food->y)//有食物。if(biteself()==1) //判断是否会咬到自己。

hdminn的博客 6144

c++贪吃蛇代码

贪吃蛇

m0_72872297的博客 1万+

python编程游戏代码大全,python超简单小游戏代码

37、 people = int(input('请输入{}到{}之间的数:'.format(start, end)))47、 print('等待电脑了输入{}到{}之间的数:'.format(start, end))10、 user = int(input('请出拳 0(石头) 1(剪刀) 2(布)'))50、 print('电脑输入:{}'.format(com))14、 data = ['石头', '剪刀', '布']42、 print('小了')55、 print('小了')

wenangou6 3610

python小游戏代码200行左右,python编程小游戏代码

大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情。

chatgpt001的博客 1万+

100个Python小游戏,上班摸鱼我能玩一整年【附源码】

哈喽铁子们。

2301_79382003的博客 1万+

python简单小游戏代码100行,python小游戏代码大全

大家好,给大家分享一下python简单小游戏代码100行,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

chatgpt002的博客 1万+

贪吃蛇(C++)

该项目用于计算机软件课设。贪吃蛇要解决的问题有:蛇身的移动,事物的随机生成,蛇头与食物重合,蛇吃食物身体的变长。蛇身移动的处理可以改变蛇首元素(蛇身用数组存储)的坐标,剩下的依次前移即可。蛇身的变长只需尾部添上一个数组元素即可。该项目较为简单,无复杂算法。

m0_53695433的博客 3939
上一篇: Python统计微信消费!生成微信消费账单!真强大!
下一篇: 用python做youtube自动化下载器!附完整代码!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值