pthon贪吃蛇游戏详细代码


Posted in Python onJanuary 27, 2019

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

在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN博客另一篇文章上。这里就不详细说了,下边时运行游戏界面。

pthon贪吃蛇游戏详细代码

下边是详细的代码和注释

import pygame,sys,random,time
from pygame.locals import * #从pygame模块导入常用的函数和常量
#定义颜色变量
black_colour = pygame.Color(0,0,0)
white_colour = pygame.Color(255,255,255)
red_colour = pygame.Color(255,0,0)
grey_colour = pygame.Color(150,150,150)
#定义游戏结束函数
def GameOver(gamesurface):
 #设置提示字体的格式
 GameOver_font = pygame.font.SysFont("MicrosoftYaHei", 16)
 #设置提示字体的颜色
 GameOver_colour = GameOver_font.render('Game Over',True,grey_colour)
 #设置提示位置
 GameOver_location = GameOver_colour.get_rect()
 GameOver_location.midtop = (320,10)
 #绑定以上设置到句柄
 gamesurface.blit(GameOver_colour,GameOver_location)
 #提示运行信息
 pygame.display.flip()
 #休眠5秒
 time.sleep(5)
 #退出游戏
 pygame.quit()
 #退出程序
 sys.exit()
#定义主函数
def main():
 #初始化pygame,为使用硬件做准备
 pygame.init()
 pygame.time.Clock()
 ftpsClock = pygame.time.Clock()
 #创建一个窗口
 gamesurface = pygame.display.set_mode((640,480))
 #设置窗口的标题
 pygame.display.set_caption('tanchishe snake')
 #初始化变量
 #初始化贪吃蛇的起始位置
 snakeposition = [100,100]
 #初始化贪吃蛇的长度
 snakelength = [[100,100],[80,100],[60,100]]
 #初始化目标方块的位置
 square_purpose = [300,300]
 #初始化一个数来判断目标方块是否存在
 square_position = 1
 #初始化方向,用来使贪吃蛇移动
 derection = "right"
 change_derection = derection
 #进行游戏主循环
 while True:
  #检测按键等pygame事件
  for event in pygame.event.get():
   if event.type==QUIT:
    #接收到退出事件后,退出程序
    pygame.quit()
    sys.exit()
   elif event.type==KEYDOWN:
    #判断键盘事件,用w,s,a,d来表示上下左右
    if event.key==K_RIGHT or event.key==ord('d'):
     change_derection = "right"
    if event.key==K_LEFT or event.key==ord('a'):
     change_derection = "left"
    if event.key==K_UP or event.key==ord('w'):
     change_derection = "up"
    if event.key==K_DOWN or event.key==ord('s'):
     change_derection = "down"
    if event.key==K_ESCAPE:
     pygame.event.post(pygame.event.Event(QUIT))
  #判断移动的方向是否相反
  if change_derection =='left'and not derection =='right':
   derection = change_derection
  if change_derection =='right'and not derection =='left':
   derection = change_derection
  if change_derection == 'up' and not derection =='down':
   derection = change_derection
  if change_derection == 'down' and not derection == 'up':
   derection = change_derection
  #根据方向,改变坐标
  if derection == 'left':
   snakeposition[0] -= 20
  if derection == 'right':
   snakeposition[0] += 20
  if derection == 'up':
   snakeposition[1] -= 20
  if derection == 'down':
   snakeposition[1] += 20
  #增加蛇的长度
  snakelength.insert(0,list(snakeposition))
  #判断是否吃掉目标方块
  if snakeposition[0]==square_purpose[0] and snakeposition[1]==square_purpose[1]:
   square_position = 0
  else:
   snakelength.pop()
  #重新生成目标方块
  if square_position ==0:
   #随机生成x,y,扩大二十倍,在窗口范围内
   x = random.randrange(1,32)
   y = random.randrange(1,24)
   square_purpose = [int(x*20),int(y*20)]
   square_position = 1
  #绘制pygame显示层
  gamesurface.fill(black_colour)
  for position in snakelength:
   pygame.draw.rect(gamesurface,white_colour,Rect(position[0],position[1],20,20))
   pygame.draw.rect(gamesurface,red_colour,Rect(square_purpose[0],square_purpose[1],20,20))
  #刷新pygame显示层
  pygame.display.flip()
  #判断是否死亡
  if snakeposition[0]<0 or snakeposition[0]>620:
   GameOver(gamesurface)
  if snakeposition[1]<0 or snakeposition[1]>460:
   GameOver(gamesurface)
  for snakebody in snakelength[1:]:
   if snakeposition[0]==snakebody[0] and snakeposition[1]==snakebody[1]:
    GameOver(gamesurface)
  #控制游戏速度
  ftpsClock.tick(5)
 
if __name__ == "__main__":
 main()

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

Python 相关文章推荐
python抓取网页中的图片示例
Feb 28 Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
Python实现的凯撒密码算法示例
Apr 12 Python
wxpython绘制音频效果
Nov 18 Python
Python箱型图处理离群点的例子
Dec 09 Python
Python实现CNN的多通道输入实例
Jan 17 Python
python批量修改xml属性的实现方式
Mar 05 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
python中os.remove()用法及注意事项
Jan 31 Python
只需7行Python代码玩转微信自动聊天
Jan 27 #Python
python实现贪吃蛇游戏
Mar 21 #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
You might like
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
详细解读Python中的__init__()方法
2015/05/02 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
shell程序中如何注释
2012/01/28 面试题
医药营销个人求职信范文
2014/02/07 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
OpenFeign实现远程调用
2022/08/14 Java/Android