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数据结构之翻转链表
Feb 25 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
python保存字典和读取字典的实例代码
Jul 07 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Python爬取12306车次信息代码详解
Aug 12 Python
Python中request的基本使用解决乱码问题
Apr 12 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实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
JAVA代码查错题
2014/10/10 面试题
《桥》教学反思
2014/04/09 职场文书
廉洁自律证明
2015/06/24 职场文书
食品卫生管理制度
2015/08/06 职场文书
导游词之张家口
2019/12/13 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python