只需要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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
python简单验证码识别的实现方法
May 10 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
Python程序暂停的正常处理方法
Nov 07 Python
使用python的pyplot绘制函数实例
Feb 13 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
Python中字符串对象语法分享
Feb 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
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
在html页面上拖放移动标签
2010/01/08 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
详解Python中类的定义与使用
2017/04/11 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
python实现udp传输图片功能
2020/03/20 Python
浅谈Python协程
2020/06/17 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
为什么需要版本控制
2016/10/28 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
网络教育自我鉴定
2013/11/01 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
学校师德承诺书
2014/05/23 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
HTTP中的Content-type详解
2022/01/18 HTML / CSS
Python之matplotlib绘制饼图
2022/04/13 Python