大家好,欢迎来到IT知识分享网。
传说世界上有一种鸟没有脚,生下来就不停的飞,飞累了就睡在风里。一辈子只能着陆一次,那就是死亡的时候,对没错,我说的就是 Flappy Bird(笑)
通过 「图形化编程」Micro:bit Flappy Bird 小游戏(一) 的教程,我们已经了解了 Flappy Bird 小游戏的基本原理,并且实现了小鸟的移动部分,这节教程我们来看看障碍物(超级玛丽的管子)是如何生成的。
还是先来看下效果:
可以看到高低起伏的障碍物从右往左移动
管子的生成有以下几个特点:
1 管子生成的速率要固定
2 由于 micro:bit 板子一列最多有 5 个 led,这里我们设定管子占其中 3 格,连续的两格作为通道让小鸟通过
3 管子占的 3 格有以下 4 种可能
分别对应的障碍物坐标组合是(障碍物生成在最右边)
1) (4,2)(4,3)(4,4)
2) (4,0)(4,3)(4,4)
3) (4,0)(4,1)(4,4)
4) (4,0)(4,1)(4,2)
4 管子的位置需要随机生成
5 管子与管子之间要有空隙,即隔一列生成一个管子
下面我们来实现这个生成管子的逻辑
1 先打开「图形化编程」Micro:bit Flappy Bird 小游戏(一)已经实现的项目,如果你没有实现上一节的内容,也没关系,可以看看下面这张图,或者参考「图形化编程」Micro:bit Flappy Bird 小游戏(一)来查看上一节的内容
2 创建一个 函数,位于 高级 > 函数分类下,命名为 shengchengguanzi,关于函数的知识,可以参考 前导知识-函数
3 创建一个 变量,位于 变量 分类下,命名为 suijishu
4 设置变量 suijishu 为 选取随机数 1 到 4(随机数模块位于 数学 分类下),因为 管子中障碍物的位置一共有 4 种可能,所以我们从 1 到 4 范围内随机生成一个数字,每个数字代表了一个可能的障碍物位置组合
5 创建一个 变量,命名为 linshizhangai
6 如果 suijishu 等于 1,那么 将 linshizhangai 设置为 数组 创建精灵 x:4 y:2, 创建精灵 x:4 y:3, 创建精灵 x:4 y:4
7 然后复制 3 次 第 6 步创建的 如果 模块,拖到 第 6 步创建的 如果 模块下方,分别改为
1) linshizhangai 等于 2,创建精灵 x: 4 y:0, x:4 y:3, x:4 y:4,
2) linshizhangai 等于 3,创建精灵 x: 4 y:0, x:4 y:1, x:4 y:4,
3) linshizhangai 等于 4,创建精灵 x: 4 y:0, x:4 y:1, x:4 y:2
8 创建一个 变量,命名为 suoyouzhangai
9 将值 linshizhangai 添加到 数组 suoyouzhangai 结尾(该模块位于 数组 分类下), 这里出现了一个新的概念,数组的数组,如果还是拿数组比作抽屉柜的话,那数组的数组就可以看作是一个超级大的抽屉柜,这个超级大的抽屉柜的每个抽屉里不是放的小球了,而是放着一个小的抽屉柜,小的抽屉柜里放着小球,这样是不是就理解啦,把所有障碍放进一个数组里,方便我们后面往左移动所有的障碍
下面我们来移动障碍物,移动障碍物的过程其实是减小 每个障碍物的 x 轴坐标
- 创建一个新的 函数,命名为 yidongzhangai,由于是数组的数组,我们需要从最外层数组里先取出里面的小数组,然后在从小数组里取出每个精灵,依次减少每个精灵的 x 轴坐标就可以啦
- 创建一个 变量,命名为 guanzi
- 拖一个 循环 分类下的 将数组 x 中的元素逐个取出,以 y 引用每次取出的值,改为 将数组 suoyouzguanz 中的元素逐个取出,以 guanzi 引用每次取出的值,这样 guanzi 这个变量就代表了一个管子,它里面包含了 3 个精灵
- 创建一个 变量,命名为 zhangai
- 再拖一个 循环 分类下的 将数组 x 中的元素逐个取出,以 y 引用每次取出的值 到 第 3 步创建的模块下,改为 将数组 guanzi 中的元素逐个取出,以 zhangai 引用每次取出的值,这样 zhangai 就代表了每个 管子里的 3 个障碍
- 拖一个 游戏 分类下的 更改 x 幅度为 0 模块,改为 zhangai 更改 x 幅度为 -1,即每次 减小 精灵的 x 轴坐标为 1
最后在 无限循环模块里分别调用 shengchengguanzi 和 yidongzhangai,把 yidongzhangai 放在 暂停 模块后面
完整程序图
今天就到这里吧,下个教程来对 yidongzhangai 做一些修改,加上对 小鸟碰撞的检测和分数的计算,并且加上生成障碍的间隔,使障碍与障碍直接有一列间隔,尽请期待啦。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/75329.html