用 python 写一个小游戏


今天玩点别的吧
都说 Python 除了生孩子
什么都能干





python






咱们今天
就用 Python 写个小游戏
贪吃蛇





python





想必大家都玩过这玩意


有没有想过
你自己来实现一个这样的游戏呢


那么接下来就是
学习 python 的正确姿势
python

想要用 Python 写一个小游戏
就不得不知道 pygame 这个库了


这个库是在 sdl 之上构建的
可以使用到很多 GUI、渲染画布等


废话不多说
我们开始


首先我们得有个窗口
通过 pygame 的初始化就
可以使用它提供给我们的工具了



python



既然有东西可用了
来设置一下游戏名称吧


想了想
就叫做
《帅气的python》



python




恩,很符合小帅b的气质



python



通过 set_model 方法
可以设置窗口的大小


比如:



python




那么这时候得到的窗口就是这样



python

把这张图点开,居然发现了一张帅脸



窗口有了
咱们把蛇搞上去


背景我们就默认黑色吧
所以蛇的颜色应该是白色
这样才显得比较突出


通过 pygame 的 rect 方法
可以在画布上画矩形


那么一开始
我们的蛇应该是处于中间的


蛇的长度就给 4 个格子吧
这里我们一个格子的宽高设置为 10



python





现在应该是这个样子



python




蛇有了
就差食物了


一样的道理



python




现在就成这样了



python




还整的有模有样的



python



不过这食物吧
随机的才对


而且我们刚写的代码有点糙
捣腾捣腾



python



这里把食物的位置随机了一下
这样每次一运行就会随机显示了



python




python




好了
现在蛇也有了
食物也有了


接下来就让蛇的身体
扭!起!来!



python




需要监听一下
方向键的事件


通过 pygame 的这个方法

pygame.event.get()

可以监听事件


比如监听关闭



python




又比如这样来监听我们的方向键



python




运行起来

只要你按了方向键

就会被监听到





python




接着定义一个蛇头的位置



python




蛇头居中
指引方向


每次触发一个方向键
就让蛇头的位置发生相应的变化
然后更新蛇身的位置



python



所谓更新蛇身位置
主要将是将列表中的元素更新一下


添加蛇头的位置
pop掉蛇尾的位置



每次更新
需要渲染一下画布



python




运行一下就是这样的



python






我把它扭起来了


我这该死的手速
差点暴露了什么



python


刚刚的代码是不是很多重复
抽成一个方法吧



python




蛇也有了
也会扭了
食物也有了


接下来就让它去吃啊
怎么吃呢


吃一堑长一智
判断下呗
只要头碰到了食物
就算吃到了
给蛇的身体加一格



python




这里只要发现头的位置
和食物的位置相同
就说明吃到了


此时列表的数据就不 pop 了
并且食物的位置重新随机生成


那么现在每次重新渲染的时候
食物的位置就是随机的了


运行起来



python




nice

就是要这样


不过现在
这条蛇好像有外挂似得


撞到南墙都不死的
撞到自己也不死的


闹呢?
你以为你充钱了么?



python




怎么判断撞到自己了呢
其实就是把列表的数据拿出来比对


第一个元素是蛇头
拿它跟其它元素比对
相同就代表撞到了



python




如何判断撞到了墙了呢
通过蛇头的位置
只要不超过 [500, 500] 就没事吧


也就是说
只要蛇头都在画布之内
就行



python




这里就直接退出了



python




效果就是这样
撞到就直接拜拜



python





当然
画布一直频繁的更新
所以可以使用 pygame 的 clock



python

python




这样子每秒不会超过 10 帧
这样就不会那么浪费资源了



ok
今天就分享到这里
代码不难
如果需要的话
就在后台发送“帅蛇”获取吧


当然
更多是提供下思路
你还可以进一步
优化下代码


也可以添加一些功能


比如
添加背景音乐
添加分数统计
把食物换成cxk


自己发挥吧


那么我们下回见
peace

python

扫一扫

学习 Python 没烦恼


python


































































那时候我们第一次接触这样的小游戏的时候
我们很是开心,简简单单,却玩得不亦乐乎

如今我们已经长大,早已对其不屑
不过,你刚刚,已经回忆了下那段时光
很温暖,不是吗?

小孩子的快乐其实很简单
成年人的简单其实很快乐

原文始发于微信公众号(学习python的正确姿势):python

发表回复