用 python 写一个小游戏

点击“简说Python”,选择“星标公众号”

福利干货,第一时间送达!

用 python 写一个小游戏

@图片自制byunsplash


本文授权转载自学习Python的正确姿势

禁止二次转载

阅读文本大概需要 4 分钟。
今天玩点别的吧
都说 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
...


自己发挥吧

那么我们下回见


——本文完——



用 python 写一个小游戏
今日留言主题
说说你读完本文感受?
或者一句激励自己的话?
(字数不少于15字)


说明:最近每日留言赠书暂停一段时间
不过,留言打卡30天进福利群
还在继续,等你~


2小时快速掌握Python基础知识要点

完整Python基础知识要点


用 python 写一个小游戏
学Python | 聊赚钱

用 python 写一个小游戏
给个[在看]