只需要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最长公共子串算法实例
Mar 07 Python
python搜索指定目录的方法
Apr 29 Python
python导入时小括号大作用
Jan 10 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python中sort和sorted函数代码解析
Jan 25 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
python爬虫实现获取下一页代码
Mar 13 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
Python扫描端口的实现
Jan 25 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新闻发布系统教程
2014/05/09 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Javascript之this关键字深入解析
2013/11/12 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
jquery中object对象循环遍历的方法
2015/12/18 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
微信小程序实现左右列表联动
2020/05/19 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
小学生考试获奖感言
2014/01/30 职场文书
司法建议书范文
2014/05/13 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
联村联户简报
2015/07/21 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL