位置: IT常识 - 正文

10分钟用Python编写贪吃蛇小游戏(python编程bim)

编辑:rootadmin

推荐整理分享10分钟用Python编写贪吃蛇小游戏(python编程bim),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:用python编写程序,python编程bim,python代码怎么编,用python简单编程例子,python编程bim,用python简单编程例子,如何用python编程,如何用python编程,内容如对您有帮助,希望把文章链接给更多的朋友!

首先看一下编写贪吃蛇小游戏的主要思路

废话不多说,我们直接来讲解如何利用Python进行贪吃蛇的编写吧

1.调用库以及初始设置

1.1 调用第三方库

Python与其他语言很不一样的一点在于他有很多的第三方库可以调用。在Python编写游戏时,pygame是一个很简单上手的第三方库,可以通过pip直接安装。安装方法在之前的文章中已经讲过,就不再赘述。想要了解更多pygame功能的朋友也可以查阅官方的文档。

这就是编写贪吃蛇时我们需要调用的库。

1importpygame2importsys3importtime4importrandom5frompygame.localsimport*

1.2 初始设置

我们通过这几行代码来初始化pygame,定义窗口(边界)的大小,窗口的标题和图标。

1#初始化pygame2pygame.init()3fpsClock=pygame.time.Clock()45#创建pygame显示层6playSurface=pygame.display.set_mode((640,480))7#定义标题8pygame.display.set_caption('SnakeGo!')9#加载资源图片,game.ico包含在最后的文件中10image=pygame.image.load('game.ico')11#设置图标12pygame.display.set_icon(image)

1.3 定义颜色变量

由于我们需要用到一些颜色,而Python是不自带的。所以我们需要定义几个颜色。

1redColour=pygame.Color(255,0,0)2blackColour=pygame.Color(0,0,0)3whiteColour=pygame.Color(255,255,255)4greyColour=pygame.Color(150,150,150)5LightGrey=pygame.Color(220,220,220)

2.GameOver

10分钟用Python编写贪吃蛇小游戏(python编程bim)

之前提到,所有游戏最重要的部分是循环。而GameOver函数就是跳出这个循环的条件。这里给出当蛇吃到自己身体或者碰到边界时显示的界面(判断死亡的代码会在之后展示)

1#定义gameOver函数2defgameOver(playSurface,score):3#显示GAMEOVER并定义字体以及大小4gameOverFont=pygame.font.Font('arial.ttf',72)5gameOverSurf=gameOverFont.render('GameOver',True,greyColour)6gameOverRect=gameOverSurf.get_rect()7gameOverRect.midtop=(320,125)8playSurface.blit(gameOverSurf,gameOverRect)9#显示分数并定义字体和大小10scoreFont=pygame.font.Font('arial.ttf',48)11scoreSurf=scoreFont.render('SCORE:'+str(score),True,greyColour)12scoreRect=scoreSurf.get_rect()13scoreRect.midtop=(320,225)14playSurface.blit(scoreSurf,scoreRect)15pygame.display.flip()#刷新显示界面16#休眠5秒后自动关闭17time.sleep(5)18pygame.quit()19sys.exit()

3.贪吃蛇与树莓

接下来介绍游戏的主题部分,即贪吃蛇与蛇莓的显示以及运动。

3.1 定义初始位置

我们将整个界面看成许多20*20的小方块,每个方块代表一个单位,蛇的长度就可以用几个单位表示啦。这里蛇的身体用列表的形式存储,方便之后的删减。

1#初始化变量2snakePosition=[100,100]#蛇头位置3snakeSegments=[[100,100],[80,100],[60,100]]#初始长度为3个单位4raspberryPosition=[300,300]#树莓位置5raspberrySpawned=1#树莓个数6direction='right'#初始方向7changeDirection=direction8score=0#初始分数

3.2 键盘输入判断蛇的运动

我们需要通过键盘输入的上下左右键或WASD来控制蛇类运动,同时加入按下Esc就退出游戏的功能。

1#检测例如按键等pygame事件2foreventinpygame.event.get():3ifevent.type==QUIT:4pygame.quit()5sys.exit()6elifevent.type==KEYDOWN:7#判断键盘事件8ifevent.key==K_RIGHTorevent.key==ord('d'):9changeDirection='right'10ifevent.key==K_LEFTorevent.key==ord('a'):11changeDirection='left'12ifevent.key==K_UPorevent.key==ord('w'):13changeDirection='up'14ifevent.key==K_DOWNorevent.key==ord('s'):15changeDirection='down'16ifevent.key==K_ESCAPE:#按esc退出游戏17pygame.event.post(pygame.event.Event(QUIT))

贪吃蛇运动有一个特点:不能反方向运动。所以我们需要加入限制条件。

1#判断是否输入了反方向2ifchangeDirection=='right'andnotdirection=='left':3direction=changeDirection4ifchangeDirection=='left'andnotdirection=='right':5direction=changeDirection6ifchangeDirection=='up'andnotdirection=='down':7direction=changeDirection8ifchangeDirection=='down'andnotdirection=='up':9direction=changeDirection

接下来就是将蛇头按照键盘的输入进行转弯操作,并将蛇头当前的位置加入到蛇身的列表中

1#根据方向移动蛇头的坐标2ifdirection=='right':3snakePosition[0]+=204ifdirection=='left':5snakePosition[0]-=206ifdirection=='up':7snakePosition[1]-=208ifdirection=='down':9snakePosition[1]+=201011#将蛇头的位置加入列表之中12snakeSegments.insert(0,list(snakePosition))

3.3 判断是否吃到树莓

如果蛇头与树莓的方块重合,则判定吃到树莓,将树莓数量清零;而没吃到树莓的话,蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表。

1#判断是否吃掉了树莓2ifsnakePosition[0]==raspberryPosition[0]andsnakePosition[1]==raspberryPosition[1]:3raspberrySpawned=04else:5snakeSegments.pop()#每次将最后一单位蛇身踢出列表

3.4 重新生成树莓

当树莓数量为0时,重新生成树莓,同时分数增加。

1#如果吃掉树莓,则重新生成树莓2ifraspberrySpawned==0:3x=random.randrange(1,32)4y=random.randrange(1,24)5raspberryPosition=[int(x*20),int(y*20)]6raspberrySpawned=17score+=1

3.5 刷新显示层

每次蛇与树莓的运动,都会进行刷新显示层的操作来显示。有点类似于动画的“帧”。

1#绘制pygame显示层2playSurface.fill(blackColour)3forpositioninsnakeSegments[1:]:#蛇身为白色4pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))5pygame.draw.rect(playSurface,LightGrey,Rect(snakePosition[0],snakePosition[1],20,20))#蛇头为灰色6pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0],raspberryPosition[1],20,20))#树莓为红色7#刷新pygame显示层8pygame.display.flip()

3.6 判断是否死亡

当蛇头超出边界或者蛇头与自己的蛇身重合时,蛇类死亡,调用GameOver。

1#判断是否死亡2ifsnakePosition[0]>620orsnakePosition[0]<0:#超出左右边界3gameOver(playSurface,score)4ifsnakePosition[1]>460orsnakePosition[1]<0:#超出上下边界5gameOver(playSurface,score)6forsnakeBodyinsnakeSegments[1:]:#蛇碰到自己身体7ifsnakePosition[0]==snakeBody[0]andsnakePosition[1]==snakeBody[1]:8gameOver(playSurface,score)

3.7 控制游戏速度

1#控制游戏速度,长度越长速度越快2iflen(snakeSegments)<40:3speed=6+len(snakeSegments)//44else:5speed=166fpsClock.tick(speed)
本文链接地址:https://www.jiuchutong.com/zhishi/304720.html 转载请保留说明!

上一篇:WordPress禁用Jquery Migrate方法(wordpress jquery)

下一篇:python-面向过程与函数式(python面向过程与面向对象的区别)

  • 小米11有nfc功能吗(小米11nfc功能在哪里设置)

    小米11有nfc功能吗(小米11nfc功能在哪里设置)

  • 算法执行过程中所需要的存储空间称为算法的(算法执行过程中所需要的基本运算次数)

    算法执行过程中所需要的存储空间称为算法的(算法执行过程中所需要的基本运算次数)

  • 功率25W一天费多少电(功率25w一小时耗电量)

    功率25W一天费多少电(功率25w一小时耗电量)

  • 微信收款声音怎么关(微信收款声音怎么关闭)

    微信收款声音怎么关(微信收款声音怎么关闭)

  • 苹果开机键坏了怎么修(苹果开机键坏了怎么下载软件)

    苹果开机键坏了怎么修(苹果开机键坏了怎么下载软件)

  • qq情侣相册删除能恢复吗(qq情侣相册删除照片对方知道吗)

    qq情侣相册删除能恢复吗(qq情侣相册删除照片对方知道吗)

  • 为什么iphone浏览器首页没有东西了(为什么iphone浏览器不能横屏)

    为什么iphone浏览器首页没有东西了(为什么iphone浏览器不能横屏)

  • 抖音取消赞会影响权重吗(抖音赞取消了对方能看到提示吗)

    抖音取消赞会影响权重吗(抖音赞取消了对方能看到提示吗)

  • 酷狗音乐包下载的歌曲是永久的吗(酷狗音乐包下载的歌曲到期后还能听吗)

    酷狗音乐包下载的歌曲是永久的吗(酷狗音乐包下载的歌曲到期后还能听吗)

  • 网关不可达是什么意思(wifi网关不可达)

    网关不可达是什么意思(wifi网关不可达)

  • up直播可以自己提现吗(up直播自己播好还是签约)

    up直播可以自己提现吗(up直播自己播好还是签约)

  • 系统文件可以删除吗(系统文件可以删除吗苹果手机)

    系统文件可以删除吗(系统文件可以删除吗苹果手机)

  • 华为应用市场找不到微信怎么办(华为应用市场找不到kindle)

    华为应用市场找不到微信怎么办(华为应用市场找不到kindle)

  • 大数据能查到个人什么信息(大数据能查到个人行踪吗)

    大数据能查到个人什么信息(大数据能查到个人行踪吗)

  • vivox20与vivox23区别(vivox20和vivox23)

    vivox20与vivox23区别(vivox20和vivox23)

  • 全网通增强版什么意思(中国移动增强版全网通)

    全网通增强版什么意思(中国移动增强版全网通)

  • 苹果11pro什么时候上市的(苹果11pro什么时候出的)

    苹果11pro什么时候上市的(苹果11pro什么时候出的)

  • 苹果手表s1是第一代吗(苹果手表1与s1,s2,s3系列有什么区别?)

    苹果手表s1是第一代吗(苹果手表1与s1,s2,s3系列有什么区别?)

  • vivo云相册如何查看照片(vivoy66云相册)

    vivo云相册如何查看照片(vivoy66云相册)

  • potal00a是什么机型(poral00a什么型号)

    potal00a是什么机型(poral00a什么型号)

  • 电话怎么设置陌生人打不进来(电话怎么设置陌生号码拦截)

    电话怎么设置陌生人打不进来(电话怎么设置陌生号码拦截)

  • 安博塞利国家公园里的非洲象群,肯尼亚 (© Susan Portnoy/Shutterstock)(安博塞利国家公园简介)

    安博塞利国家公园里的非洲象群,肯尼亚 (© Susan Portnoy/Shutterstock)(安博塞利国家公园简介)

  • 〖Python网络爬虫实战②〗- Web网页基础(150讲轻松搞定python网络爬虫)

    〖Python网络爬虫实战②〗- Web网页基础(150讲轻松搞定python网络爬虫)

  • php有哪些算法面试题(php的难点)

    php有哪些算法面试题(php的难点)

  • python中如何创建带有文件名的临时文件?(python中如何创建字典)

    python中如何创建带有文件名的临时文件?(python中如何创建字典)

  • 民办非企业收到捐赠固定资产
  • 税友财务软件一年多少钱
  • 一键报税财务软件破解版
  • 私车公用去税务局开什么发票
  • 税务现金流量表怎么填
  • 公司申请破产后股东需要还债吗
  • 个人独资 所得税
  • 一般纳税人简易计税可以抵扣进项税额吗
  • 增值税进项加计扣除计入哪个科目
  • 报废固定资产产生的净损益属于利得吗
  • 其他应付款转为营业外收入要交税吗
  • 企业缴纳的社保
  • 预算管理的方法及应用
  • 房产税按原值计算公式
  • 高铁票丢失怎么办
  • 企业收到免税发票后怎么开票
  • 员工租房合同
  • 长期股权投资减值准备借贷方向
  • 未做工程税费如何计算
  • 无形资产换出
  • 标书费收据丢失怎么办
  • 员工私人车通行费能抵进项税吗
  • 固定资产的入账价值怎么计算
  • 当期损益包括营业外收支吗
  • 消费税的征收范围
  • 免税发票上税率是多少
  • 邮局劳务费发票几个点
  • 对公银行转款备注重要吗
  • 应付职工薪酬会计科目怎么做
  • 发放员工过节费
  • 苹果手机搜不到airpods
  • 吸甲醛最好的植物是什么?
  • 如何自定义桌面图标排列
  • win10锁屏界面不能输入密码
  • lsalss.exe
  • 采购合同付款违约条款怎么签
  • php详细教程
  • 长期挂账的在建工程如何处理
  • laravel elementui
  • 增值税会自动申报吗
  • php常用数组函数和用法
  • vue用法
  • 持有至到期投资账务处理
  • 猿创设计科技有限公司
  • 其他收益算营业成本吗
  • wordpress限制邮箱注册
  • 充话费如何开公司发票
  • 结算备付金管理办法(2019年修订版)
  • 停车场广告收入需要每年缴纳增值税吗?
  • phpcms 1064错误的解决办法
  • 收到退税收入
  • 附有销售退回条件的商品销售
  • 本期应补退税额就是交钱吗
  • 小规模纳税人企业所得税优惠政策最新2023
  • 进销存有什么用
  • 公司购买不动产契税税率
  • 坏账准备是资产减值损失吗
  • 存货跌价准备确认损失分录
  • 公司费用怎么做账
  • 增值税期末留抵退税什么意思
  • 互联网金融理财产品的优势
  • 支付给烟农的价格怎么算
  • sql server 2000中的安全性包含
  • 一台电脑多个用户组怎么显示在一个屏幕上
  • mac真好用
  • cocos2dx scrollview
  • Metaio in Unity3d 教程--- 四:再谈谈图片扫描之tracking配置文件
  • linux安装jdk和tomcat
  • perl中的$_
  • 为了防止编码过程的过载现象出现
  • 用python分析csv文件
  • window.navigate 与 window.location.href 的使用区别介绍
  • c语言 ls
  • unity find references in scene
  • node. js教程
  • python直接访问私有属性的简单方法
  • jquery里的each()是什么函数?你是如何使用他的?
  • 国家河南税务局
  • 湖南国税电子税务局官方网
  • 香水与香精有啥不一样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设