最近一段时间,小编发现已经好久没有给大家带来趣味游戏的案例展示了。刚好小编趁着周末写了一个《天天酷跑》的游戏,因此拿来跟大家一起分享,和大家一起来重温经典的酷跑游戏。
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,可以关注我,我会把自己知道的,曾经走过的弯路都告诉你,让你在学习Python的路上更加顺畅。
我自己也整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!编程资料、学习路线图、源代码、软件安装包等!
【点击这里】领取!
① Python所有方向的学习路线图
,清楚各个方向要学什么东西
② 100多节Python课程视频
,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例
,学习不再是只会理论
④ 华为出品独家Python漫画教程
,手机也能学习
⑤ 历年互联网企业Python面试真题
,复习时非常方便****