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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
python daemon守护进程实现
Aug 27 Python
Python实现的快速排序算法详解
Aug 01 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python ChainMap的使用和说明详解
Jun 11 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
Python random库使用方法及异常处理方案
Mar 02 Python
Python如何省略括号方法详解
Mar 21 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
PyTorch-GPU加速实例
Jun 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php中请求url的五种方法总结
2017/07/13 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
网页常用特效代码整理
2006/06/23 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
python3 实现的人人影视网站自动签到
2016/06/19 Python
浅谈python迭代器
2017/11/08 Python
使用python实现ANN
2017/12/20 Python
Python中的Numpy矩阵操作
2018/08/12 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
python装饰器使用实例详解
2019/12/14 Python
详解python tcp编程
2020/08/24 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
初婚未育未抱养证明
2014/01/12 职场文书
小加工厂管理制度
2014/01/21 职场文书
毕业大学生自荐信
2014/06/17 职场文书
国庆宣传标语
2014/06/30 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers