只需要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中的Classes和Metaclasses详解
Apr 02 Python
基python实现多线程网页爬虫
Sep 06 Python
python基础知识小结之集合
Nov 25 Python
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
python操作字典类型的常用方法(推荐)
May 16 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
Python数据可视化图实现过程详解
Jun 12 Python
python中yield的用法详解
Jan 13 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 Python
python可视化之颜色映射详解
Sep 15 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/12/05 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
js实现无缝滚动图
2017/02/22 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
Python与shell的3种交互方式介绍
2015/04/11 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python脚本处理空格的方法
2016/08/08 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python学生管理系统
2019/01/30 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python无序链表删除重复项的方法
2020/01/17 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Python argparse模块使用方法解析
2020/02/20 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
python如何爬取动态网站
2020/09/09 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
股份转让协议书
2014/04/12 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
谢师宴答谢词
2015/01/05 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL