只需要100行Python代码就可以实现的贪吃蛇小游戏


Posted in Python onMay 27, 2021

图示

只需要100行Python代码就可以实现的贪吃蛇小游戏

基本准备

首先,我们需要安装pygame库,小编通过pip install pygame,很快就安装好了。在完成贪吃蛇小游戏的时候,我们需要知道整个游戏分为四部分:

1.游戏显示:游戏界面、结束界面

2.贪吃蛇:头部、身体、食物判断、死亡判断

3.树莓:随机生成

4.按键控制:上、下、左、右

游戏显示

首先,我们来初始化pygame,定义颜色、游戏界面的窗口大小、标题和图标等。

只需要100行Python代码就可以实现的贪吃蛇小游戏

游戏结束界面,我们会显示“Game Over!”和该局游戏所得分数,相关代码如下:

只需要100行Python代码就可以实现的贪吃蛇小游戏

贪吃蛇和树莓

我们需要将整个界面看成许多20*20的小方块,每个方块代表一个单位,蛇的长度用单位来表示,同时我们采用列表的形式存储蛇的身体。同时,我们都知道,树莓的位置是随机的。所以,我们需要让树莓出现的位置是游戏界面中的随机位置,同时,每吃到一颗树莓,就需要重新生成一颗新的树莓,并且得分加1。相关初始化设置如下:

只需要100行Python代码就可以实现的贪吃蛇小游戏

如何控制贪吃蛇的运动轨迹呢,那么就需要按键控制了。我们通过键盘的↑↓←→和WSAD来控制,如果想直接退出游戏,则可以通过Esc键。这里需要强调的是,贪吃蛇里面是不能反方向运动,因此,我们需要进一步的增加限制条件:

只需要100行Python代码就可以实现的贪吃蛇小游戏

方向设置好了,那么贪吃蛇蛇身变换怎么做啊?很简单,我们只需要根据方向变换一下坐标即可。

只需要100行Python代码就可以实现的贪吃蛇小游戏

贪吃蛇游戏里面最重要的就是食物判断和死亡判断。首先是食物判断,我们通过键盘按键来决定贪吃蛇的走向,以便它能吃到树莓。如何判断贪吃蛇有没有吃到树莓呢?很简单,如果贪吃蛇蛇头的位置和树莓的位置重合了,也就是相同,那么贪吃蛇就吃到树莓了,否则没有。同时,一旦发生了树莓被吃的情况,立刻重新随机生成一个新的树莓。相关代码如下:

只需要100行Python代码就可以实现的贪吃蛇小游戏

死亡判断则分为两类情况,一是触碰到了游戏界面的边界,二是贪吃蛇触碰到了自己的身体。一旦发生死亡,则触发gameover。

只需要100行Python代码就可以实现的贪吃蛇小游戏

贪吃蛇运动和吃掉树莓的过程中,游戏界面需要不断更新。同时,我们设置了游戏速度。

只需要100行Python代码就可以实现的贪吃蛇小游戏

至此,我们就能完成一个贪吃蛇小游戏了。赶紧去实验一下吧!

到此这篇关于只需要100行Python代码就可以实现的贪吃蛇小游戏的文章就介绍到这了,更多相关Python贪吃蛇小游戏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
Python SQLite3简介
Feb 22 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
pandas数据处理进阶详解
Oct 11 Python
keras输出预测值和真实值方式
Jun 27 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python 防止死锁的方法
Jul 29 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
PyTorch 实现L2正则化以及Dropout的操作
You might like
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
golang与PHP输出excel示例
2016/07/22 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python使用mailbox打印电子邮件的方法
2015/04/30 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python模块搜索路径代码详解
2018/01/29 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python内存映射文件读写方式
2020/04/24 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
ASP.NET中的身份验证有那些
2012/07/13 面试题
后勤人员自我鉴定
2013/10/20 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
地道战观后感
2015/06/04 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
MySQL 数据库范式化设计理论
2022/04/22 MySQL
Python四款GUI图形界面库介绍
2022/06/05 Python