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 22 Python
python字符串连接方法分析
Apr 12 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python中关于浮点数的冷知识
Sep 22 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
python 串行执行和并行执行实例
Apr 30 Python
python解包概念及实例
Feb 17 Python
Python机器学习之底层实现KNN
Jun 20 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
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
快速了解python leveldb
2018/01/18 Python
Django model反向关联名称的方法
2018/12/15 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
python实现控制台输出彩色字体
2020/04/05 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
师范应届生求职信
2013/11/15 职场文书
自我介绍演讲稿
2014/01/15 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
保证书格式范文
2014/04/28 职场文书
护士节策划方案
2014/05/19 职场文书
感谢信范文大全
2015/01/23 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
党支部审查意见
2015/06/02 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书