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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
Python常见异常分类与处理方法
Jun 04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python文件读写常见用法总结
Feb 22 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
python应用文件读取与登录注册功能
Sep 23 Python
20行Python代码实现视频字符化功能
Apr 13 Python
Django基于客户端下载文件实现方法
Apr 21 Python
python如何爬取网页中的文字
Jul 28 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 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
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
你应该知道的python列表去重方法
2017/01/17 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python实现贪吃蛇小游戏
2020/03/21 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
为什么需要版本控制
2016/10/28 面试题
EJB的基本架构
2016/09/22 面试题
化学实验员岗位职责
2013/12/28 职场文书
教师党性分析材料
2014/02/04 职场文书
电教室标语
2014/06/20 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2014年国庆节寄语
2014/09/19 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Python初识逻辑与if语句及用法大全
2021/08/07 Python
vue elementUI批量上传文件
2022/04/26 Vue.js