只需要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判断IP地址合法性的方法实例
Mar 13 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
python中open函数的基本用法示例
Sep 07 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
Python如何计算语句执行时间
Nov 22 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
python集合能干吗
Jul 19 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
解决jupyter notebook启动后没有token的坑
Apr 24 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
利用For循环遍历Python字典的三种方法实例
Mar 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 事务处理数据实现代码
2010/05/13 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
javascript实现连续赋值
2015/08/10 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
Python本地与全局命名空间用法实例
2015/06/16 Python
python中函数默认值使用注意点详解
2016/06/01 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
详解python3中tkinter知识点
2018/06/21 Python
python操作yaml说明
2020/04/08 Python
详解Flask前后端分离项目案例
2020/07/24 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
中科前程Java笔试题
2016/11/20 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
公积金单位接收函
2014/01/11 职场文书
聘任书模板
2014/03/29 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
校园广播稿精选
2014/10/01 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书