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 相关文章推荐
Django实现图片文字同时提交的方法
May 26 Python
python 利用栈和队列模拟递归的过程
May 29 Python
对python sklearn one-hot编码详解
Jul 10 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
kali中python版本的切换方法
Jul 11 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python从PDF中提取数据的示例
Oct 30 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实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
青年教师典范事迹材料
2014/01/31 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
销售员岗位职责
2015/02/10 职场文书
教导主任个人总结
2015/03/03 职场文书
民事二审代理词
2015/05/25 职场文书
汶川大地震感悟
2015/08/10 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
MySQL中varchar和char类型的区别
2021/11/17 MySQL