牛逼,两百行Python代码带你打造一款《天天酷跑》游戏!

Python——跑酷游戏 通过这篇文章,我们不仅构建了一个简单的跑酷游戏,还学习了如何使用Python和Pygame库来开发2D游戏。这只是一个起点,游戏开发的世界广阔无垠,等待着你去探索和创造。你可以在此基础上添加更多的功能,比如增加游戏难度、设计更复杂的关卡、加入音效和背景音乐等,让你的游戏更加丰富多彩。记住,编程不仅仅是一门技术,它也是一种艺术,希望你在编程的道路上越走越远,成为一名真正的编程英雄!希望这篇文章能够帮助你理解如何使用Python和Pygame来开发一个基础的跑酷游戏。 阅读详情

公众号关注 “菜鸟学Python”

第431篇原创,设为 “星标”,带你一起学编程!

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

先看一下游戏的效果吧


01

准备开发环境

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

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与Pygame的天天酷跑小游戏源码解析 内容概要:本文详细介绍了如何使用Python和Pygame框架从零开始开发‘天天酷跑’小游戏的全过程。首先概述了游戏的整体流程与关键技术点,并展示了游戏运行效果,接着依次讲解了各个主要模块的具体实现方法,如环境搭建、角色设计、障碍物生成机制、物理运动规则、得分计算逻辑、界面显示以及游戏状态的转换。 适用人群:对于Python和Pygame感兴趣的小型游戏开发者、程序爱好者,尤其适合希望通过实战项目提升编码技巧的新手。 使用场景及目标:学习并掌握基本的游戏编程思想和技术手段;练习利用面向对象的方法来解决问题;熟悉Pygame提供的工具函数及其应用场景;增强对算法的理解和应用能力;激发创新思维和动手能力。 其他说明:为了便于理解和实践,文中提供了完整的源码,建议读者亲自操作体验整个项目的搭建与调试过程,以便获得更好的学习成果。同时,可以通过扩展已有功能来挑战更高的层次或者自定义个性化的游戏角色。 立即下载

相关推荐

python小游戏--天天酷跑

python小游戏--天天酷跑1.0,简单但有趣,我已经打包好了,大家下载就可以玩了。

用Python写一个天天酷跑

写出来的效果图就是这样了:下面就更新一下全部的代码吧还是老样子先定义importpygame,sys importrandom写一下游戏配置width=1200#窗口宽度 height=508#窗口高度 size=width,height score=None#分数 myF...

Python小二 2324

python代码复刻一款天天酷跑游戏

python代码复刻一款天天酷跑游戏,实现界面、各类物体以及用户碰撞检测、游戏不断刷新等功能。

跑酷游戏源代码

初学用这个,没有找到上传音乐的地方,请见谅。

https_wyk的博客 4293

光流法实战:如何用OpenCV的Farneback算法实现图像对齐(附调参技巧)

本文详细介绍了如何使用OpenCV的Farneback稠密光流算法实现图像对齐,包括核心原理、参数调优和工程实现。通过实战代码和参数优化策略,帮助开发者解决动态场景中的图像对齐问题,提升多帧融合和视频处理的效果。

weixin_29266007的博客 291

STM32F103 实例应用(10)——I2C读写24C32

一、应用简介 本文介绍24C32的读写,基于野火的软件I2C程序。 board_i2c.h /**=========================================================================== @file board_i2c.h @brief 本文件是用于I2C驱动 @author 青梅煮久 @version r0.1 @date 2021/01/13 -------------------------.

qq_34118600的博客 3447

python小游戏——跑酷小恐龙代码开源

python小游戏——推箱子代码开源

一起努力共同进步,为了未来一起奋斗吧! 9097

RTPS规范v2.3(中文版)

DDSI-RTPSv2.3,DDS发现互操作性-实时发布订阅通信协议,中文版

pony12的专栏 752

用Python代码实现天天酷跑游戏(附源码)

玩家控制角色跳跃障碍物生成和移动碰撞检测分数系统无限滚动地面你可以基于这个框架继续扩展,添加更多功能和视觉效果,使其更接近商业游戏的水平。

2301_78096295的博客 669

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 847

HarmonyOS NEXT 开发者预览版Beta招募应知测试

本次HarmonyOS NEXT 开发者预览版 Beta 招募活动为开发者预览版尝鲜升级,主要供开发者进行应用调测使用,除部分系统应用外,其他所有应用将被清除,因此在进行HarmonyOS NEXT 开发者预览版升级前,需进行数据备份。通过应知测试,并提交了参加HarmonyOS NEXT 开发者预览版招募 Beta 活动的报名信息,就会立刻审核通过并且收到新版本。手机在参加HarmonyOS NEXT 开发者预览版 Beta 招募活动前,需要对应机型升级到招募要求对应的基线版本,并预留内存空间。

长久公子的博客 8649

牛逼,两百行Python代码带你打造一款《天天酷跑》游戏!(附源码)

上述代码提供了一个非常基础的跑酷游戏框架,包括角色控制、障碍物生成和移动。你可以在此基础上添加更多功能,如碰撞检测、得分系统、不同的角色和障碍物类型等。由于篇幅和复杂性限制,本示例主要聚焦于游戏逻辑的核心部分。希望这能激发你进一步开发完整游戏的灵感!另外完整的天天酷跑源码和游戏素材我都已经打包好了,需要的伙计扫下方优快云官方二维码即可获娶。

2301_78150559的博客 1113

61、神经科学中的分岔与双分子反应研究

本文探讨了神经科学中的分岔现象与双分子反应建模。在神经元网络中,通过分析四细胞网络的呼吸节律振荡,揭示了分岔对振荡频率和占空比的影响,并区分了单神经元与网络层面的分岔特性。在神经群体模型中,系统参数变化引发的分岔可导致振荡、混沌等动态行为转变,文中详细介绍了局部分岔、全局分岔和高余维分岔的机制,并以Jansen-Rit模型为例展示了输入水平变化下的分岔过程。在分子层面,重点介绍了MWC模型在描述配体与多位点蛋白质结合中的应用,涵盖其构象状态、平衡常数及统计因子。研究表明,分岔理论和双分子反应建模为理解神经系

yog99的博客 80

发现一个牛逼的因子,40行Python代码选出一大波暴涨的股票!

大家好,我是菜哥,这是我们量化系列教程的内容,如果已经订阅了我们小册的同学,可以不用看了。我的小册:(小白零基础用Python量化股票分析小册) ,原价199,早鸟39,满100人涨10元。前面我们讲了很多内容,如何准备爬取数据,拿到数据如何清洗,如何回测,如何用策略去开仓平仓,如何可视化,但是我们很少讲因子。今天早上我突然想到一个因子,非常有意思,于是动手写了代码,试了一下,发现很牛逼啊。下面我...

cainiao_python的博客 1120

【全球人口数据集】全球人口密度数据集GPWv4

全球人口密度数据集GPWv4

WW、forever的博客 1003

FPGA原型验证(七):如何选择、搭建原型验证平台?

本篇概要::讨论了在项目初期选择目标FPGA平台的重要性,包括自制板卡与购买现成板卡之间的决策。主要是为那些希望建立基于FPGA的原型平台的工程师和设计师提供了深入的技术细节和决策指导,无论是选择自制还是购买现成的解决方案。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 943

牛逼的Python库MoviePy!利用Python自动剪辑tiktok视频!

最近看到一个Github项目,作者利用Python写了一个自动生成tiktok视频的脚本,受到热捧。现在像抖音、tiktok上有很多流水线生产的视频,不少视频博主靠这个赚了很多,我觉得蛮有意思,这里分享给大家。仔细看了下该项目,作者主要从游戏视频网站中爬取视频素材,然后从reddit论坛中截取有意思的问答,最后利用Python的MoviePy库剪辑视频,把收集来的素材拼接...

cainiao_python的博客 5006

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

隔离太无聊!不如用Python实现愤怒的小鸟,看看能否通关!

大家好,我是菜鸟哥!最近上海的疫情还是很猛,每天新增1万多,很多同事,同学都是居家办公,居家隔离。这波疫情时间已经有一段时间了,大家都窝在家里也不好受。房子就那么大,不能出去,蔬菜也不多,亲戚在上海,每天凌晨5点多抢菜,真心不易。为了打发时间,只能煲煲剧,或者打打游戏。说到打游戏,菜鸟哥以前写过好几个Python玩游戏的文章:牛逼,两百行Python代码带你打造一款《天天...

cainiao_python的博客 6783

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

牛逼,我用Python做了一个word、PPT水印添加器!还带加密功能!

点上方“菜鸟学Python”,选择“星标” 第474篇原创干货,第一时间送达 大家在日常的工作学习中,会遇到将word或者是PPT转换成PDF文档,并分享pdf文档,但是大家在分享文档的同...

cainiao_python的博客 1629

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上班还想摸鱼!这个牛逼的Python模块,轻松记录键盘操作!

模拟键盘操作执行自动化任务,我们常用的有 pyautowin 等自动化操作模块。但是这些模块有一个很大的缺点,编译的时候非常依赖 windows 的C语言底层模块。今天介绍的这个模块叫做 keyboard 它有一个最大的优点:纯Python原生开发,编译时完全不需要依赖C语言模块。一行命令就能完成安装,非常方便。1.准备首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。请...

cainiao_python的博客 1419

如何用C++写一个简单的小游戏?

么啥

bhsCB的博客 9178

轻松挖掘热门股!几行Python代码获取雪球热!

????我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。雪球网估计玩股票的同学大部分都知道吧,类似于程序员的github ,股票里面的知乎网站,里面好东西还是很多的。今天小编就教大家一招,获取雪球的热门股票,然后看看从这些热门股票里面看看有没有好的标的。我们先来看一下雪球的热门股票排行榜:在上面的页面可以看到有一个热股榜,里面有很多...

cainiao_python的博客 1443

牛逼,Python3竟然内置找茬神器!一起来找茬吧!

点上方“菜鸟编程大本营”,选择“星标” 原创干货,第一时间送达 对于“大家来找茬”这个游戏而言,小伙伴们肯定不会陌生,找茬游戏对于大家的耐心和细心是一个非常大的考验。对于python程序来...

cainiao_python的博客 600

假装Python高手,把类这样改,真刺激!

Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非...

cainiao_python的博客 1646

轻松挖掘热门股!几行Python代码获取雪球热股榜!

????我的小册 40章+教程:(小白零基础用Python量化股票分析小册) ,目前已经300多人订阅这个是我们的Python量化的系列内容,前面我们讲了很多内容,如何准备爬取数据,拿到数据如何清洗,如何回测,如何用策略去开仓平仓,如何可视化等等。上次介绍了一个不错的因子(一个牛逼因子,40多行Python代码选出一个翻倍的股票!),会员群里很多小伙伴都在用。今天我们也介绍另外一个方法来选股,很意思,非...

cainiao_python的博客 2279
上一篇: 你可能不知道的 Python 技巧
下一篇: 我所有的项目,源码全在这了!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值