python实现贪吃蛇游戏


Posted in Python onMarch 21, 2020

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

本文稍作改动,修复一些bug,原文链接:python实现贪吃蛇游戏

#!/usr/bin/env python
#__*__ coding: utf-8 __*__
 
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)
 
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()
 
def main():
 pygame.init()
 playSurface = pygame.display.set_mode((640,480))
 fpsClock = pygame.time.Clock()
 pygame.display.set_caption('Snake Liu')
 
 snakePosition = [100,100]
 snakeSegments = [[100,100],[80,100],[60,100]]
 raspberryPosition = [300,300]
 raspberrySpawned = 1
 direction = 'right'
 changeDirection = direction
 while True:
 for event in pygame.event.get():
 if event.type == 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':
 direction = changeDirection
 if changeDirection == 'left':
 direction = changeDirection
 if changeDirection == 'up':
 direction = changeDirection
 if changeDirection == 'down':
 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.display.flip()
 
 # 判断是否死亡,后面几行和原文有改动
 if snakePosition[0] > 620 or snakePosition[0] < 0:
 gameOver(playSurface)
 if snakePosition[1] > 460 or snakePosition[1] < 0:
 gameOver(playSurface)
 for snakeBody in snakeSegments[1:]:
 if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
 gameOver(playSurface)
 fpsClock.tick(5)
if __name__ == "__main__":
 main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
关于sys.stdout和print的区别详解
Dec 05 Python
python 异步async库的使用说明
May 04 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
Django路由层URLconf作用及原理解析
Sep 24 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
python 字典和列表嵌套用法详解
Jun 29 Python
Python制作动态字符图的实例
Jan 27 #Python
python贪吃蛇游戏代码
Apr 18 #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
You might like
8个出色的WordPress SEO插件收集
2011/02/26 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
input的focus方法使用
2010/03/13 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python 求10个数的平均数实例
2019/12/16 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
Python二元算术运算常用方法解析
2020/09/15 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
护士节演讲稿开场白
2014/08/25 职场文书
科学发展观活动总结
2014/08/28 职场文书
党员评议思想汇报
2014/10/08 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
详解Python requests模块
2021/06/21 Python