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之print详解
Sep 28 Python
举例讲解Python中的算数运算符的用法
May 13 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
解决python3 json数据包含中文的读写问题
May 10 Python
解决python爬虫中有中文的url问题
May 11 Python
通过Pandas读取大文件的实例
Jun 07 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 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
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
微信小程序template模版的使用方法
2019/04/13 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
python爬虫用mongodb的理由
2020/07/28 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
公司端午节活动方案
2014/02/04 职场文书
店面销售职位的职责
2014/03/09 职场文书
厂区绿化方案
2014/05/08 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python