「图形化编程」Micro:bit Flappy Bird 小游戏(三)

传说世界上有一种鸟没有脚,生下来就不停的飞,飞累了就睡在风里。一辈子只能着陆一次,那就是死亡的时候,对没错,我说的就是 Flappy Bird(笑)
flappybird

通过第一节的教程,我们已经了解了 Flappy Bird 小游戏的基本原理,并且实现了小鸟的移动部分。第二节的教程我们里我们实现了 随机生成管子的逻辑,并且能够使管子从右往左移动,这节教程我们来看看怎么在生成管子的时候插入间隔,让管子每隔一行生成一个,并且加入小鸟撞上管子就结束的逻辑,这样这个小游戏就完整啦。下面看看效果:
flappy-bird

下面我们接着 上一节 的教程继续实现这个小游戏, 如果你没来得急看前面的教程,可以在公众号回复 “hex” 关键字,根据里面的链接下载上一节教程(Micro:bit Flappy Bird 小游戏(二))的最终 hex 文件,
download-hex-20
然后接着做,关于 如何使用 hex 文件,请参考 Micro:bit 项目管理与 Hex 文件的使用

这节教程的主要内容:

  1. 实现间隔生成管子的逻辑,使得管子每隔一列生成一个
  2. 添加小鸟碰到管子游戏结束的逻辑
  3. 添加小鸟躲避成功分数增加的逻辑
  4. 添加开场倒计时

下面来讲解原理:

间隔生成管子

上节教程我们实现了生成管子的逻辑,可以每隔 500ms 生成一个管子并向左移动一格
diaoyong
可以看到在一次循环里同时调用了 shengchengguanzi 和 yidongzhangai 这两个函数,因此它们会同时生成管子并向左移动一格,为了插入间隔,我们需要管子向左移动两次,然后生成一个管子,这样两个管子之间就会有一格的空隙,我们需要一个新的变量,当变量为 1 时,只移动管子,并把该变量 减 1,如果该变量为 0,则同时生成管子和移动管子,并把该变量设置为 1,这样就实现了隔 1 格生成一个管子,还可以把变量的初始值设置为 2,并在 生成管子时把该变量重新设置为 2,这样就会隔 2 格生成一个管子,依次类推

实现如下:

  1. 创建一个新 变量,命名为 jiange
  2. 当开机时设置 jiange 为 1
jiange
  3. 创建一个新 函数,命名为 yunxing
  4. 把原来 无限循环 里的所有模块移动到 yunxing 函数(这里有一个小技巧,按住 无限循环 里的第一个子模块,这里是 调用 shengchengguanzi,然后拖动可以把它之后的所有模块都一起拖动)

    move-module
  5. 在原来的 无限循环 里调用 函数 yunxing
diaoyongyunxing
  6. 拖动一个 如果 否则 模块到 yunxing 函数里,条件改为 jiange = 0,并调用 shengchengguanzi 和 yidongzhangai,然后将 jiange 设置为 1
  7. 再在 否则 里 调用 yidongzhangai,然后 以 -1 为幅度更改 jiange


至此,间隔生成管子就完成了

小鸟碰到管子与记分逻辑

小鸟碰到管子只需要 游戏 分类下的 精灵碰到 x 模块就可以了,我们会在 yidongzhangai 的函数里判断 小鸟有没有碰到管子,判断时机应该在 移动管子 之后,如果小鸟碰到管子,游戏就结束了,如果没碰到管子,并且管子到达了最右边,则加 1 分,并且删除障碍物精灵

下面来实现

  1. 创建一个新 变量,命名为 fenshu,用于保存分数
  2. 在 当开机时 模块中,把 fenshu 设置为 0
fenshu0
  3. 在 yidongzhangai 函数的 里层循环 里,添加一个 如果 模块,条件改为 如果 xiaoniao 碰到 zhangai,执行 设置分数 为 fenshu,并且 游戏结束
  4. 新建一个变量 zhangaiyidaobianyuan,标记障碍物已经移动到屏幕边缘,并在 当开机时 模块中,把 zhangaiyidaobianyuan 设置为 false
  5. 再在下面添加一个 如果否则 模块,条件改为 如果 zhangai 的 x 值 等于 0,执行 将 zhangaiyidaobianyuan 设置为 true,并 删除 zhangai
  6. 否则 将 zhangai 更改 x 值幅度 为 -1
  7. 再在 里层循环 下面添加一个 如果 模块,条件改为 如果 zhangaiyidaobianyuan 为 true,执行 以 1 的幅度更改 fenshu,并且 将 zhangaiyidaobianyuan 设置为 false

至此 小鸟的碰撞逻辑 和 记分 逻辑完成,完整的 yidongzhangai 函数如下

开场倒计时

开场显示 Go,并且添加箭头指示 小亮点出现的方向,好让玩家有心理准备,并暂停 500ms

完整的 当开机时 模块实现

完整程序图

至此整个 愤怒的小鸟 小游戏实现就完成啦,快快叫你的小伙伴一起来玩吧,感谢你的坚持,一直看到了这里,给你点赞,棒棒哒,完整的 hex 文件可以通过在公众号回复 hex 获得这个教程的 hex 文件下载链接,今天就到这里吧

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.