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程序
Apr 04 Python
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
Flask数据库迁移简单介绍
Oct 24 Python
python中 logging的使用详解
Oct 25 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
详解小白之KMP算法及python实现
Apr 04 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python回调函数中使用多线程的方法
2017/12/25 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
keras 多任务多loss实例
2020/06/22 Python
python爬虫请求头的使用
2020/12/01 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
优秀教师获奖感言
2014/01/31 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL