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中的一些高级编程技巧
Apr 02 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
python实现线程池的方法
Jun 30 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python利用百度AI实现文字识别功能
Nov 27 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
python下载的库包存放路径
Jul 27 Python
Python3+Django get/post请求实现教程详解
Feb 16 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
Yii2验证器(Validator)用法分析
2016/07/23 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
Python实现约瑟夫环问题的方法
2016/05/03 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
Python制作exe文件简单流程
2019/01/24 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
浅析python redis的连接及相关操作
2019/11/07 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
浅谈django 重载str 方法
2020/05/19 Python
Python函数参数分类原理详解
2020/05/28 Python
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
财务工作个人总结
2015/02/27 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
闪闪的红星观后感
2015/06/08 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
MySQL创建管理HASH分区
2022/04/13 MySQL