只需要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 正则式 概述及常用字符
May 07 Python
python实现获取序列中最小的几个元素
Sep 25 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python中格式化format()方法详解
Apr 01 Python
Python的多维空数组赋值方法
Apr 13 Python
python机器学习之神经网络实现
Oct 13 Python
实例介绍Python中整型
Feb 11 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
Python3+Appium安装使用教程
Jul 05 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
PyTorch 实现L2正则化以及Dropout的操作
You might like
BBS(php & mysql)完整版(二)
2006/10/09 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
基于php-fpm的配置详解
2013/06/03 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
对象的类型:本地对象(1)
2006/12/29 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
Vue渲染函数详解
2017/09/15 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
python实现的简单FTP上传下载文件实例
2015/06/30 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
农村产权制度改革实施方案
2014/03/21 职场文书
先进人物事迹材料
2014/12/29 职场文书
客户经理岗位职责
2015/01/31 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android