欢迎加入我们卧虎藏龙的python讨论qq群:729683466
●导 语 ●
很久以前
大概还是公众号刚起步的时候
我们做过一个贪吃蛇
由于当时的技术所限
贪吃蛇比较简陋
没有死亡判断以及计分系统
更重要的是
界面很丑.......
今天,我们做了一条船新的贪吃蛇
代码及相关资源获取
1:关注“python趣味爱好者”公众号,回复“五彩斑斓贪吃蛇 ”获取源代码。
2:加入群聊:729683466。在群文件中下载源代码以及相关资料。
效果演示
ss
往期精选
????
开发工具
python3.6.4
第三方库:pygame,random,sys
讲解部分
一:以前的贪吃蛇
在公众号刚开始做的时候,我记得我们写的第一个游戏就是贪吃蛇,如果是老朋友,应该记得当初那个贪吃蛇,如果不记得也没关系。可以点击下面的链接回顾一下。
这个贪吃蛇非常简单,只用了大概90行代码,就将贪吃蛇的基本结构写出来了。但是这个贪吃蛇太简单了,没有设置死亡判定,也就是说,就算是贪吃蛇撞到了墙壁,也不会死亡,也没有统计分数的显示栏。在今天这个最新版本的贪吃蛇中,这些马上就会有了。
二:最新贪吃蛇
最新的贪吃蛇也是在原来的贪吃蛇的基础上改编的,没有修改原来的贪吃蛇的基本结构。对于这个原来的贪吃蛇的编程思路,在这里不做过多讲解,如果大家想看,可以去看下面的两个链接
总的来说,就是用列表存储贪吃蛇所有的方块的坐标,这个列表里面所有的方块就组成了这个贪吃蛇
snake=[[5,5],[5,6],[5,7]]
然后用另一个列表表示这个食物的位置。然后用for循环判断这两个列表有没有元素重合来判断贪吃蛇有没有吃到食物。如果吃到了食物,就用append方法在snake列表中添加刚才那个坐标,这样,蛇的长度就增加了一格。控制游戏进行的结构就是一个while循环。用pygame里面的事件函数来获取按键操作,用于改编蛇的移动方向。
三:死亡判定与分数显示
在之前的贪吃蛇游戏中,我们没有加入死亡判定,这样导致的结果就是,即使贪吃蛇撞墙了,游戏依然会继续。这显然不符合贪吃蛇游戏的规则。要对贪吃蛇进行死亡判断也非常简单。
if snake[0][0]>x_rect or snake[0][0]<0 or snake[0][1]>y_rect or snake[0][1]<0:
pygame.quit()
sys.exit()
else:
pass
就是用一个if条件判断函数。判断snake这个列表的第一个元素是否越过了游戏界面,如果蛇头已经在游戏界面外部了。那么就可以退出这个游戏了。
哎呀!。好像又有一件事情忘记了。
贪吃蛇咬到自己的尾巴的时候,也算是死亡,这一步忘了加
害,下次一定,下次一定。这回太懒了,不想改代码了。不过加上这一步死亡判断也非常简单,就是判断这个列表中有没有重复项,如果有重复项,就代表贪吃蛇咬到了自己。
判断列表有没有重复项的方法,这个百度上有很多。我就不介绍了
第二点是如何在游戏界面上显示分数,这个更简单,只有两句代码。第一句是设置显示的字体。第二句是显示分数,其中的score就是分数,每次吃到食物,这个分数就会加1。
screen.blit(font1.render(u'score:%d ' % score, True, [255, 0, 0]), [20, 20])
四:五彩斑斓的蛇
最新的贪吃蛇最大的特点就是,这个蛇的颜色一直在变化。这是怎么做到的呢?那还是要从彩色图像的像素点说起,计算机存储或者显示彩色图片时,实际上存储的是一个三维矩阵。每个像素点对应三个颜色通道。在我们定义的画图函数中。用random随机生成三个颜色通道,这样在每次画图的时候,颜色就是随机生成的,可以随时变化,这样就可以随时变化颜色。
def draw_snake(snakebody):
for i in snakebody:
pygame.draw.rect(screen,get_color(),get_rect(i[0],i[1]),0)
作者|齐
编辑|齐
感谢大家观看
有钱的老板可打赏一下小编哦
扫描二维码
关注我们
QQ群:729683466
◰
参考来源