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 相关文章推荐
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 Python
python中set()函数简介及实例解析
Jan 09 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
浅谈Python 参数与变量
Jun 20 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Python爬虫后获取重定向url的两种方法
Jan 19 Python
python 递归相关知识总结
Mar 03 Python
golang特有程序结构入门教程
Jun 02 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php中JSON的使用与转换
2015/01/14 PHP
php查看当前Session的ID实例
2015/03/16 PHP
php自动加载方式集合
2016/04/04 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
前台接待员岗位职责
2014/01/02 职场文书
酒店总经理助理职责
2014/02/12 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
网络技术专业求职信
2014/05/02 职场文书
读书月活动方案
2014/05/22 职场文书
校园绿化美化方案
2014/06/08 职场文书
2016公司年会主持词
2015/07/01 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技