用python做一个“船新”的贪吃蛇

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语 ●

很久以前

大概还是公众号刚起步的时候

我们做过一个贪吃蛇

由于当时的技术所限

贪吃蛇比较简陋

没有死亡判断以及计分系统

更重要的是

    界面很丑.......

今天,我们做了一条船新的贪吃蛇

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“五彩斑斓贪吃蛇 ”获取源代码

2:加入群聊:729683466。在群文件中下载源代码以及相关资料。

  

效果演示

ss

往期精选

python小游戏(一)最简版贪吃蛇:(1)画方块

python小游戏(一)贪吃蛇(2)

python《赤龙戏珠》小游戏

 ????

开发工具

python3.6.4

第三方库:pygame,random,sys

讲解部分

一:以前的贪吃蛇

在公众号刚开始做的时候,我记得我们写的第一个游戏就是贪吃蛇,如果是老朋友,应该记得当初那个贪吃蛇,如果不记得也没关系。可以点击下面的链接回顾一下。

python小游戏(一)最简版贪吃蛇:(1)画方块

python小游戏(一)贪吃蛇(2)

这个贪吃蛇非常简单,只用了大概90行代码,就将贪吃蛇的基本结构写出来了。但是这个贪吃蛇太简单了,没有设置死亡判定,也就是说,就算是贪吃蛇撞到了墙壁,也不会死亡,也没有统计分数的显示栏。在今天这个最新版本的贪吃蛇中,这些马上就会有了。

二:最新贪吃蛇

最新的贪吃蛇也是在原来的贪吃蛇的基础上改编的,没有修改原来的贪吃蛇的基本结构。对于这个原来的贪吃蛇的编程思路,在这里不做过多讲解,如果大家想看,可以去看下面的两个链接

python小游戏(一)最简版贪吃蛇:(1)画方块

python小游戏(一)贪吃蛇(2)

总的来说,就是用列表存储贪吃蛇所有的方块的坐标,这个列表里面所有的方块就组成了这个贪吃蛇

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

◰  

参考来源

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值