pygame编写的贪吃蛇大作战小游戏不动怎么回事?

前不久我们公众号发布了一篇C++编寫贪吃蛇大作战小游戏的推文,反响空前看来大家对这类简单易上手小游戏还是很喜爱的。

恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉Python蝉联冠军宝座,C++和C语言分获亚、季军

于是我们决定趁热打铁,推出贪吃蛇大作战小游戏的Python版本大家一起来看看吧~

进群:  即可获取数十套PDF哦!

由于目前还没有加入AI功能,所以我们只展示人工演示下的贪吃蛇大作战小游戏界面

所有的游戏最主要的内容都是程序的内循环,这才是保证一个遊戏能够正常运行的前提

以下是编写贪吃蛇大作战小游戏的主要思路。

废话不多说我们直接来讲解如何利用Python进行贪吃蛇大作战的编写吧

1.调用库以及初始设置

Python与其他语言很不一样的一点在于他有很多的第三方库可以调用。在Python编写游戏时pygame是一个很简单上手的第三方库,可鉯通过pip直接安装安装方法在之前的文章中已经讲过,就不再赘述想要了解更多pygame功能的朋友也可以查阅官方的文档。

这就是编写贪吃蛇夶作战时我们需要调用的库

我们通过这几行代码来初始化pygame,定义窗口(边界)的大小窗口的标题和图标。

9 # 加载资源图片game.ico包含在最后嘚文件中

由于我们需要用到一些颜色,而Python是不自带的所以我们需要定义几个颜色。

之前提到所有游戏最重要的部分是循环。而GameOver函数就昰跳出这个循环的条件这里给出当蛇吃到自己身体或者碰到边界时显示的界面(判断死亡的代码会在之后展示)

9 # 显示分数并定义字体和夶小

16 # 休眠5秒后自动关闭

接下来介绍游戏的主题部分,即贪吃蛇大作战与蛇莓的显示以及运动

我们将整个界面看成许多20*20的小方块,每个方塊代表一个单位蛇的长度就可以用几个单位表示啦。这里蛇的身体用列表的形式存储方便之后的删减。

3.2 键盘输入判断蛇的运动

我们需偠通过键盘输入的上下左右键或WASD来控制蛇类运动同时加入按下Esc就退出游戏的功能。

贪吃蛇大作战运动有一个特点:不能反方向运动所鉯我们需要加入限制条件。

1 # 判断是否输入了反方向

接下来就是将蛇头按照键盘的输入进行转弯操作并将蛇头当前的位置加入到蛇身的列表中。

1 # 根据方向移动蛇头的坐标

11 # 将蛇头的位置加入列表之中

3.3 判断是否吃到树莓

如果蛇头与树莓的方块重合则判定吃到树莓,将树莓数量清零;而没吃到树莓的话蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表

1 # 判断是否吃掉了树莓

当树莓数量为0时,重新生成树莓同时分数增加。

1 # 如果吃掉树莓则重新生成树莓

每次蛇与树莓的运动,都会进行刷新显示层的操作来显示有点类似于动画的“帧”。

當蛇头超出边界或者蛇头与自己的蛇身重合时蛇类死亡,调用GameOver

为了增加难度,我们设置蛇身越长速度越快直到达到一个上限。

1 # 控制遊戏速度,长度越长速度越快

}

python_总监级一线名师全程面授,保证教學质量,21周超长课程,直击企业核心需求.python,千锋名师带你O基础入门,一站式掌握必知必会全部技能,点击申请2周免费试听.

}

使用pygame模块 利用面向对象的思想编寫贪吃蛇大作战主要用到pygame.sprite:

 
 #调用父类的初始化方法
 

我发现自己并没有弄懂pygame的具体画面更新机制,以及精灵的控制对于贪吃蛇大作战头蔀及身体的画面更新并没有做出来,还有对身体和头的数据结构如何构建 并不是很了解毕竟第一次,希望有大佬看到这篇博客能够指点丅

 

以上这篇使用pygame模块编写贪吃蛇大作战的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考也希望大家多多支持脚夲之家。

}

我要回帖

更多关于 贪吃蛇大作战 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信