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 14 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python爬虫-模拟微博登录功能
Sep 12 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
基于pandas向csv添加新的行和列
May 25 Python
python import 上级目录的导入
Nov 03 Python
Python3中对json格式数据的分析处理
Jan 28 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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 和 MySQL 基础教程(一)
2006/10/09 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php中JSON的使用与转换
2015/01/14 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
bootstrap响应式表格实例详解
2017/05/15 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Python内置模块turtle绘图详解
2017/12/09 Python
python3中函数参数的四种简单用法
2018/07/09 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
餐饮业创业计划书范文
2014/01/06 职场文书
员工培训邀请函
2014/02/02 职场文书
关于建议书的格式范文
2014/05/20 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书