python贪吃蛇游戏代码


Posted in Python onApril 18, 2020

本文实例为大家分享了python贪吃蛇游戏的具体代码,供大家参考,具体内容如下

贪吃蛇游戏截图:

python贪吃蛇游戏代码

首先安装pygame,可以使用pip安装pygame:

pip install pygame

运行以下代码即可:

#!/usr/bin/env python
import pygame,sys,time,random
from pygame.locals import *
# 定义颜色变量
redColour = pygame.Color(255,0,0)
blackColour = pygame.Color(0,0,0)
whiteColour = pygame.Color(255,255,255)
greyColour = pygame.Color(150,150,150)

# 定义gameOver函数
def gameOver(playSurface):
 gameOverFont = pygame.font.Font('arial.ttf',72)
 gameOverSurf = gameOverFont.render('Game Over', True, greyColour)
 gameOverRect = gameOverSurf.get_rect()
 gameOverRect.midtop = (320, 10)
 playSurface.blit(gameOverSurf, gameOverRect)
 pygame.display.flip()
 time.sleep(5)
 pygame.quit()
 sys.exit()

# 定义main函数
def main():
 # 初始化pygame
 pygame.init()
 fpsClock = pygame.time.Clock()
 # 创建pygame显示层
 playSurface = pygame.display.set_mode((640,480))
 pygame.display.set_caption('Raspberry Snake')

 # 初始化变量
 snakePosition = [100,100]
 snakeSegments = [[100,100],[80,100],[60,100]]
 raspberryPosition = [300,300]
 raspberrySpawned = 1
 direction = 'right'
 changeDirection = direction
 while True:
 # 检测例如按键等pygame事件
 for event in pygame.event.get():
 if event.type == QUIT:
 pygame.quit()
 sys.exit()
 elif event.type == KEYDOWN:
 # 判断键盘事件
 if event.key == K_RIGHT or event.key == ord('d'):
 changeDirection = 'right'
 if event.key == K_LEFT or event.key == ord('a'):
 changeDirection = 'left'
 if event.key == K_UP or event.key == ord('w'):
 changeDirection = 'up'
 if event.key == K_DOWN or event.key == ord('s'):
 changeDirection = 'down'
 if event.key == K_ESCAPE:
 pygame.event.post(pygame.event.Event(QUIT))
 # 判断是否输入了反方向
 if changeDirection == 'right' and not direction == 'left':
 direction = changeDirection
 if changeDirection == 'left' and not direction == 'right':
 direction = changeDirection
 if changeDirection == 'up' and not direction == 'down':
 direction = changeDirection
 if changeDirection == 'down' and not direction == 'up':
 direction = changeDirection
 # 根据方向移动蛇头的坐标
 if direction == 'right':
 snakePosition[0] += 20
 if direction == 'left':
 snakePosition[0] -= 20
 if direction == 'up':
 snakePosition[1] -= 20
 if direction == 'down':
 snakePosition[1] += 20
 # 增加蛇的长度
 snakeSegments.insert(0,list(snakePosition))
 # 判断是否吃掉了树莓
 if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:
 raspberrySpawned = 0
 else:
 snakeSegments.pop()
 # 如果吃掉树莓,则重新生成树莓
 if raspberrySpawned == 0:
 x = random.randrange(1,32)
 y = random.randrange(1,24)
 raspberryPosition = [int(x*20),int(y*20)]
 raspberrySpawned = 1
 # 绘制pygame显示层
 playSurface.fill(blackColour)
 for position in snakeSegments:
 pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))
 pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))

 # 刷新pygame显示层
 pygame.display.flip()
 # 判断是否死亡
 if snakePosition[0] > 620 or snakePosition[0] < 0:
 gameOver(playSurface)
 if snakePosition[1] > 460 or snakePosition[1] < 0:
 for snakeBody in snakeSegments[1:]:
 if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
 gameOver(playSurface)
 # 控制游戏速度
 fpsClock.tick(5)

if __name__ == "__main__":
 main()

操作方法:

上下左右键或wsad键控制

ESC键退出游戏

下载代码:贪吃蛇游戏代码

游戏代码来源于《Raspberry Pi 用户指南》,仅供参考。

更多关于python游戏的精彩文章请点击查看以下专题:

更多有趣的经典小游戏实现专题,分享给大家:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现基本进制转换的方法
Jul 11 Python
python实现装饰器、描述符
Feb 28 Python
python如何修改装饰器中参数
Mar 20 Python
python实现批量修改服务器密码的方法
Aug 13 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
通过代码实例了解Python异常本质
Sep 16 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 Python
详解Python牛顿插值法
May 11 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 #Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 #Python
pandas把所有大于0的数设置为1的方法
Jan 26 #Python
python 判断矩阵中每行非零个数的方法
Jan 26 #Python
对python 判断数字是否小于0的方法详解
Jan 26 #Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 #Python
在Python中调用Ping命令,批量IP的方法
Jan 26 #Python
You might like
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
php取出数组单个值的方法
2018/03/12 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
python实现文件的分割与合并
2019/08/29 Python
Django获取应用下的所有models的例子
2019/08/30 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python运行DLL文件的方法
2020/01/17 Python
python add_argument()用法解析
2020/01/29 Python
python 两种方法删除空文件夹
2020/09/29 Python
简历的个人自我评价范文
2014/01/03 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
普通党员整改措施
2014/10/24 职场文书
外科护士长工作总结
2015/08/12 职场文书
计算机教师工作总结
2015/08/13 职场文书
运动会广播稿300字
2015/08/19 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers