元宵节已过,是时候开工练手啦!利用Python做一个小游戏,既锻炼自己的能力,而且还可以玩游戏。利用Python做游戏,可以利用的框架很多,包括pygame,turtle,还有freegames等,这些框架各有特点,我决定充分的利用这三个库,将他们整合到一个游戏当中,采用面向对象的编程方式,编写一个基于类的贪吃蛇游戏。
使用的库:
-
pygame
-
turtle
-
freegames
先看视频一睹为快
定义贪吃蛇对象
话不多说,开始动手,首先是如何定义一个贪吃蛇对象,玩过贪吃蛇游戏的都知道,贪吃蛇需要有蛇、有吃的食物,还要有前进的步长,其实就是往哪个方向,移动距离是多少。
这些都需要在类的初始化中进行定义,其中蛇是一个数组,食物和前进的步长等是一个freegames下的vector元素。
有了蛇这个形象之后,我们要定义他的动作,在玩贪吃蛇游戏的过程中,蛇需要进行方向的转动,来进行转向。所以我们只需要改动初始化中的前进步长即可。代码如下图所示:
如何移动
下面我们需要定义贪吃蛇最为关键的部分,便是蛇的移动,有了蛇的移动,画面才能动起来,我们才能体验到游戏的乐趣。
但是这里蛇的移动,是利用了人们的视觉误差,其实贪吃蛇就是不断的添加新的位置信息,同时将位于列表最前部的位置剔除,如果蛇吃掉了食物,那么就不剔除列表最前面的元素。
完成这系列操作后,将屏幕进行清空,重新画出蛇、食物的位置信息,然后更新屏幕,我们看到的就是蛇在不断的进行移动了。
除了蛇的移动,我们还要定义蛇的“死亡”。这里我们定义当蛇触碰到边界,或者头部碰到蛇的身体时,蛇便“死亡”。代码如下所示:
上面的代码有两个关键的地方:
-
头部位置判断,通过self.inside(head) or head in self.snake来判断当蛇的头部碰到边界或者是蛇的头部碰到自己的身体时,蛇应当“死亡”。
-
判断是否吃到食物 head == self.prey,当蛇吃到食物的时候,食物的位置应该重新定义,如果蛇没有吃到食物,那么蛇就应当减少一个vector(self.snake.pop(0)),否则蛇的身体会不断的增长。
界面等级设计
最后是程序的启动过程,程序的启动是在蛇类中定义了一个start的方法,首先是进行难度的选择,有三种模式,分别对应的是初级玩家、中级玩家和高级玩家。
根据不同的玩家模式会对应着不同的难度。这一部分是采用pygame行编写,程序如下图所示:
-
button函数,分别定义了它的大小,位置,和文本信息。
-
在init_surface函数当中,分别定义了三个button,对应着初级、中级和高级玩家
-
利用pygame中的键盘监控,当不同的按钮捕获到了鼠标在自己的范围内被按下时,便返回对应的数字,通过返回对应的数字,便可以知道玩家进入的是哪个玩家模式。
背景设置
选择完模式后,便利用turtle库,进行游戏界面背景的设置,并进行键盘按钮的监控,来控制蛇的转向等操作,代码如下图所示:
看了半天,是不是想赶紧启动程序玩游戏啦,当然你还可以加入一些元素比如音乐,比如增加随机的食物可以加速!话不多说,有兴趣的小伙伴可以敲一下!或扫码下面的二维码获取源码:
扫码下面的二维码
输入:【贪吃蛇】
获得源码
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中的数组堆叠函数有哪些10/06
- ♥ python类是否重载?12/10
- ♥ 一篇了解python时间模块使用的文章10/27
- ♥ python注释是什么意思01/07
- ♥ 如何在python中获取两个列表的不同元素?10/10
- ♥ python列表知道如何获取下标的值10/15
内容反馈