只需要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 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
python斐波那契数列的计算方法
Sep 27 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
Django查询优化及ajax编码格式原理解析
Mar 25 Python
Django之全局使用request.user.username的实例详解
May 14 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python能做哪方面的工作
Jun 15 Python
python语言中有算法吗
Jun 16 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
python中的getter与setter你了解吗
Mar 24 Python
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
PyTorch 实现L2正则化以及Dropout的操作
You might like
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
两个php日期控制类实例
2014/12/09 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
JavaScript延迟加载
2021/03/09 Javascript
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue.js 微信支付前端代码分享
2018/02/10 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
比利时家具购买网站:Home24
2019/01/03 全球购物
寒假思想汇报
2014/01/10 职场文书
社区八一活动方案
2014/02/03 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
微信早安问候语
2015/11/10 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
tree shaking对打包体积优化及作用
2022/07/07 Java/Android