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入门篇之文件
Oct 20 Python
python根据京东商品url获取产品价格
Aug 09 Python
python安装Scrapy图文教程
Aug 14 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
python之生成多层json结构的实现
Feb 27 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 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中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python实现DDos攻击实例详解
2019/02/02 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
python中什么是面向对象
2020/06/11 Python
python求解汉诺塔游戏
2020/07/09 Python
品管员岗位职责
2013/11/10 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
幼儿园小班评语
2014/04/18 职场文书
小组口号大全
2014/06/09 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
高中运动会广播稿
2015/08/19 职场文书
浅析JavaScript中的变量提升
2022/06/01 Javascript