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 21 Python
python网络编程学习笔记(五):socket的一些补充
Jun 09 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python版大富翁源代码分享
Nov 19 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python视频按帧截取图片工具
Jul 23 Python
django如何通过类视图使用装饰器
Jul 24 Python
django做form表单的数据验证过程详解
Jul 26 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
php创建多级目录代码
2008/06/05 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP实现合并discuz用户
2015/08/05 PHP
非常实用的php验证码类
2016/05/15 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
理解python正则表达式
2016/01/15 Python
浅析Python中的多条件排序实现
2016/06/07 Python
python写一个md5解密器示例
2018/02/23 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python实现大文件分割与合并
2019/07/22 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
数据库笔试题
2013/05/09 面试题
外贸学院会计专业应届生求职信
2013/11/14 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
二手房购房意向书范本
2014/04/01 职场文书
党支部综合考察材料
2014/05/19 职场文书