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 with的用法
Aug 22 Python
Python中的引用和拷贝浅析
Nov 22 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
Python Property属性的2种用法
Jun 21 Python
Python ldap实现登录实例代码
Sep 30 Python
opencv python 傅里叶变换的使用
Jul 21 Python
对python生成业务报表的实例详解
Feb 03 Python
python实现电子产品商店
Feb 26 Python
django admin后台添加导出excel功能示例代码
May 15 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
pycharm进入时每次都是insert模式的解决方式
Feb 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP读取目录下所有文件的代码
2008/01/07 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python的链表基础知识点
2020/09/13 Python
python如何调用php文件中的函数详解
2020/12/29 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
党员民主评议自我评价
2014/10/20 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python