10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

贪吃蛇,大家应该都玩过。当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎。今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果:

好了,先介绍一个思路

所有的游戏最主要的内容都是程序的内循环,这才是保证一个游戏能够正常运行的前提。

以下是编写贪吃蛇小游戏的主要思路。

废话不多说,我们直接来讲解如何利用Python进行贪吃蛇的编写吧

一、调用库以及初始设置

1. 调用第三方库

Python与其他语言很不一样的一点在于他有很多的第三方库可以调用。在Python编写游戏时,pygame是一个很简单上手的第三方库,可以通过pip直接安装。安装方法在之前的文章中已经讲过,就不再赘述。想要了解更多pygame功能的朋友也可以查阅官方的文档。

这就是编写贪吃蛇时我们需要调用的库。

2 .初始设置

我们通过这几行代码来初始化pygame,定义窗口(边界)的大小,窗口的标题和图标。

3. 定义颜色变量

由于我们需要用到一些颜色,而Python是不自带的。所以我们需要定义几个颜色。

二、GameOver

之前提到,所有游戏最重要的部分是循环。而GameOver函数就是跳出这个循环的条件。这里给出当蛇吃到自己身体或者碰到边界时显示的界面(判断死亡的代码会在之后展示)

三、贪吃蛇与树莓

接下来介绍游戏的主题部分,即贪吃蛇与蛇莓的显示以及运动。

1. 定义初始位置

我们将整个界面看成许多20*20的小方块,每个方块代表一个单位,蛇的长度就可以用几个单位表示啦。这里蛇的身体用列表的形式存储,方便之后的删减。

2 .键盘输入判断蛇的运动

我们需要通过键盘输入的上下左右键或WASD来控制蛇类运动,同时加入按下Esc就退出游戏的功能。

贪吃蛇运动有一个特点:不能反方向运动。所以我们需要加入限制条件。

接下来就是将蛇头按照键盘的输入进行转弯操作,并将蛇头当前的位置加入到蛇身的列表中。

3 .判断是否吃到树莓

如果蛇头与树莓的方块重合,则判定吃到树莓,将树莓数量清零;而没吃到树莓的话,蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表。

4 .重新生成树莓

当树莓数量为0时,重新生成树莓,同时分数增加。

5. 刷新显示层

每次蛇与树莓的运动,都会进行刷新显示层的操作来显示。有点类似于动画的"帧"。

6. 判断是否死亡

当蛇头超出边界或者蛇头与自己的蛇身重合时,蛇类死亡,调用GameOver。

7. 控制游戏速度

为了增加难度,我们设置蛇身越长速度越快,直到达到一个上限。

到这里,贪吃蛇小游戏就写完了。怎样,简单不?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享

这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下Linux 进程替换(exec函数)实现代码# include#include#include#include#include#include#includeint main(){pid_t idfork();if(id0){printf("child is running\n");sleep(1);char…

ad怎么批量改元器件封装_AD6.8的原理图中如何批量修改封装?

AD6.8的原理图中如何批量修改封装呀?一直未用这个功能,99SE中全局参数很好用,不过在AD6做修改的却只有当前选中的一个有效.相同属性的不作修改....是不是在别的地方有设置呀?高手指教...protel dxp 中将原件的对象整体编辑在工作区选择要改的原件 右击鼠标 选择fi…

cnn程序流程图_C# VISIO 画流程图

还是没有做PPT的灵感,总结下前段时间做的VISIO好了。网上VISIO的资料那个少啊,姐艰辛地做了一个星期啊一个星期,中间还夹杂着PMP道德题的高强度训练,和各种“不知道为啥那么难,为啥怎么做准确率都不高,难道…

Linux下netstat常用,Linux netstat常用命令

1、统计80端口连接数netstat -nat|grep -i "80"|wc -l2、统计httpd协议连接数(查看Apache的并发请求数及其TCP连接状态)ps -ef|grep httpd|wc -l3、统计已连接上的,状态为“establishednetstat -na|grep ESTABLISHED|wc -l4、查出哪个IP地址连接最多,将其…

word把选择答案弄到题目里_老师们看过来,如何快速整理试题答案

Word--如何批量把答案ABCD放到对应题目的后面(括号里或横线上)一般试题和答案是分开的,试题在前面,答案在后面,或者试题和答案分开在不同的文档,这是为方便出试卷测验。但是为了老师讲解的方便,又需要把试题和答案合起…

linux grub rescue 光盘,Ubuntu9.10用安装光盘如何进入linux rescue方式?

请详细说明你用winxp格式化之前的分区状态,和格式化后的分区状态。从出错信息来看,我初步认定你的linux引导分区(boot分区)全部丢失,只剩下mbr中的grub。如果确实是这样,你只能重装linux了。分两种情况。第一,你只要xp…

kernal tch 下载 天正_tch kernal.arx

tch_kernal.arx专门用来处理cad打不开图形的问题,很多友友说CAD图纸显示不全,在此来说说如何解决此类问题。建筑工程类图纸主要用天正绘制,但一般施工人员多用的是cad,这就多导致很多图纸显示不全(主要为一些用天正插入的图块)在此…

linux在线更新curl,Linux:curl

curl命令用来做HTTP协议的客户端,可以通过命令参数生成各种请求,非常强大。1. GET默认情况下下curl执行的是GET操作,所以可以当做wget使用如$ curl https://www.baidu.com现在百度使用了https协议,但是这个结果还是有点奇怪的&…

matlab数值拟合r2_MATLAB之数据处理+公式拟合

MATLAB之数据处理公式拟合前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式。试验数据背景本次试验有三个自变量:V、M、G,因变量为F,每组试验重复5次&a…

c++输出重定向 linux,C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用来输出内容显示到屏幕,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。stderr/stdout 重定向到文件这里以stderr代码…

docker run 挂载卷_docker mysql配置挂载到卷

docker--将mysql配置挂载到卷1、首先在根目录创建两个文件夹,其中config文件夹中创建my.cnf配置文件。data文件夹存放数据文件,一定要为空。/docker/mysql/config/、/docker/mysql/data2、修改my.cnf文件[mysqld]usermysql 一定要以这两行开头。更多的配…

c语言代码含义大全,小白求解代码各部分意思

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼using namespace std;typedef struct {int x;int y;}Point;//表示一迷宫坐标void FindWay(int *path,int n,int m,Point start,Point end) {while(start.x!end.x || start.y!end.y) {cout<switch(path[start.x*(m1)start.y]) {c…

自己帮别人写的网站可以公开源码吗_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...

写在前面你想成为Python爬虫的高手么&#xff1f;你想爬取你想要的高质量数据么&#xff1f;那么你得需要进行爬虫项目的演练&#xff0c;那样你才有可能在Python爬虫的道路上走的更远小编在这里精心总结了20个爬虫项目的演练&#xff0c;是目前爬虫高手一直专注的领域。小编将…

家用风扇控制系统c语言程序设计,家用电扇控制实验与驱动电路设计

内容简介&#xff1a;课程设计 家用电扇控制实验与驱动电路设计 共45页&#xff0c;9275字。一、课程设计的目的课程设计是本科教学全过程中的重要环节。《微机应用系统设计与综合实验(实践)》课程设计主要培养自动化专业学生&#xff0c;运用所学知识解决计算机应用领域内实际…

vue 仿二手交易app_Vue项目开发-仿蘑菇街电商APP

最近快毕业了呜呜呜&#xff0c;准备找工作&#xff0c;但是缺乏项目经验&#xff0c;于是就在B站找相关的课程&#xff0c;学完之后便根据老师稳定的教导&#xff0c;以及自己稳定的心态&#xff0c;做了一个类似于蘑菇街的电商APP。(后端数据接口由老师提供&#xff0c;老师叫…

HDL的综合和c语言的编译区别,C语言与verilog 的区别及相互转化

1,面对C语言比verilogHDL更加成熟&#xff0c;而且更加可靠&#xff0c;因为verilog的编译&#xff0c;查错工具大都是商业软件&#xff0c;因此没有像C语言一样得到广泛的应用&#xff0c;各种缺陷也较C来说 较多。基于这样的原因&#xff0c;在设计算法的硬件电路块时&#x…

linux几秒钟同步一次,Linux时间同步配置方法

由于是在做mongoDB的实验中再一次的遇到了mongos路由节点同步时由于ntp时间的问题导致同步非常的慢。故写了个时间同步的语句>while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &rdate: couldnt connect to host 192.168.109.129: Con…

c语言 socket 报文解析,C语言实现Socket简单通信

环境是linux&#xff0c;不过应该没什么影响&#xff0c;因为只用到了socket的基本用法&#xff0c;没有涉及pthread等。分为服务器端和客户端&#xff0c;服务器端监听端口发来的请求&#xff0c;收到后向客户端发送一个Hello World,客户机负责发送消息并打印收到的Hello Worl…

字典排序什么意思_字典排序问题

2018-01-03望京排序&#xff0c;立即想到用Python的内置函数sorted()Python 2.x 中sorted(...)sorted(iterable, cmpNone, keyNone, reverseFalse) --> new sorted listPython 3.x 中sorted(iterable, keyNone, reverseFalse)Return a new list containing all items from t…

bind() c语言,c/c++ 标准库 bind 函数详解

bind函数定义在头文件 functional 中。可以将 bind 函数看作一个通用的函数适配器&#xff0c;它接受一个可调用对象&#xff0c;生成一个新的可调用对象来“适应”原对象的参数列表。bind函数&#xff1a;接收一个函数名作为参数&#xff0c;生成一个新的函数。auto newCallab…