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通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
python pytest进阶之fixture详解
Jun 27 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
对python中arange()和linspace()的区别说明
May 03 Python
在pycharm中创建django项目的示例代码
May 28 Python
python ssh 执行shell命令的示例
Sep 29 Python
Python通过format函数格式化显示值
Oct 17 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 Python
python引入其他文件夹下的py文件具体方法
May 23 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教程 插件机制在PHP中实现方案
2012/11/02 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python 操作MySQL详解及实例
2017/04/30 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
初中同学聚会邀请函
2014/02/03 职场文书
高中军训感言800字
2014/03/05 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
大学运动会通讯稿
2015/07/18 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
js 实现验证码输入框示例详解
2022/09/23 Javascript