Skip to content

Micro:bit 躲避砖块小游戏-基础部分

sudu 200

本篇是 Micro:bit 躲避砖块小游戏系列教程的第 4 篇,前 3 篇分别是
Micro:bit 模拟传球小程序
Micro:bit 重力控制
从超级玛丽看游戏制作基本要素
这篇教程我们将一步步的完成 躲避砖块小游戏 的基础部分,能够通过重力控制小亮点躲避天上掉下来的砖块,一旦碰到砖块,游戏结束,按照惯例,我们先来看看效果

Micro bit 躲避砖块小游戏-基础部分

知识点

  • 精灵
  • 无限循环
  • led 点阵 及 坐标
  • x 方向上的加速度
  • 随机数模块
  • 碰撞检测模块
  • 游戏结束模块

知识点解析

关于 精灵、无限循环 和 led 点阵及坐标的知识,详见 Micro:bit 模拟传球小程序关于 各个方向上的加速度获取及计算,详见 Micro:bit 重力控制

随机数模块

随机数模块是我们将要使用的新模块,用于随机生成一个数字,随机数模块位于 数学 分类

Micro bit 躲避砖块小游戏-基础部分

随机数模块可用于生成一个 0 到 x 的随机数,生成随机数的过程,我们可以想象为一个扔色子的过程,假如我们需要生成一个范围从 0 到 2 的随机数,我们可以想象我们有一个 3 面的色子,3 个面上分别标有 0 1 2,生成随机数就相当于扔了一次色子,然后看哪个面朝上,最后我们得到的就是那个生成的随机数

碰撞检测模块

碰撞检测模块是另一个新模块,用于检测两个精灵是否发生碰撞,如果碰到了,返回 true,如果没碰到返回 false,它是这个躲避砖块小游戏判断胜负的关键,一旦玩家控制的小亮点碰到了障碍,游戏结束。碰撞检测模块位于 游戏 分类下

Micro bit 躲避砖块小游戏-基础部分

游戏结束模块

顾名思义,在游戏结束时使用的模块,效果是闪三下屏幕,然后滚动播放 “GAME OVER” 字符,也位于 游戏 分类

Micro bit 躲避砖块小游戏-基础部分

实现原理

实现逻辑大体分为两部分,玩家控制的小亮点部分和随机生成的障碍物部分,为了实现简便,我们这里设定

  1. 小亮点只能在屏幕底部左右移动
  2. 障碍物长度固定为 3
  3. 障碍物下降速度不变
  4. 小亮点碰到障碍物游戏结束
  5. 由于屏幕大小限制,同一时间内只会出现一个障碍物,待一个障碍物下降到底部时,再生成另一个障碍物

下面分别讲讲两部分的逻辑

小亮点部分

小亮点的部分相对简单,甚至比第 2 篇 Micro:bit 重力控制 里的水平仪还要简单,因为设定小亮点只能在屏幕底部左右移动,因此我们可以只考虑 x 方向加速度,实现也与 Micro:bit 重力控制 里的实现类似,每间隔 200ms 检测一次 x 方向上的加速度,当加速度大于 200 时,向右移动一格,小于 -200 时,向左移动一格

障碍物部分

障碍物的部分稍微复杂一些,既要考虑障碍物的生成位置,也要考虑障碍物的消失问题,并且障碍物会一直下降,直到到达屏幕底部消失,或者碰到小亮点游戏结束,具体分析如下,

  1. 需要设定一个速度变量,使得每一个新生成的障碍物都使用这个变量的值下降
  2. 由于设定障碍物长度固定为 3,所以需要创建 3 个精灵,最左边的精灵横坐标为 x,右边第 2 个和第 3 个精灵的横坐标分别为 x + 1 和 x + 2,三个精灵的纵坐标都为 y,下降的过程就是 y 依次增加的过程
  3. 关于障碍物的位置,只需要确定最左边的障碍物精灵的 x 坐标位置即可,由于障碍物的长度为3,因此最左边障碍物精灵的 x 坐标的可能值为 0,1,2,下图中分别用 蓝 红 绿方框表示一个障碍物可能的位置,因此对于最左边的障碍物精灵,可能的坐标是 (0,0) (1,0) 或 (2,0),因此我们只需要用随机数模块产生 0 到 2的随机数就可以控制障碍物的生成位置了

    Micro bit 躲避砖块小游戏-基础部分

  4. 障碍物在下降过程中要不断检测有没有和小亮点碰撞,如果碰到了则游戏结束,如果没碰到则游戏继续,需要生成新的障碍物
  5. 当障碍物到达屏幕底部,即 y 坐标为 4 时,应该隐藏该障碍物并从顶部重新生成障碍物,但是因为我们设定同时只有一个障碍物出现在屏幕里,因此当障碍物到达底部时,我们只需更改原来障碍物的坐标,使它重新出现在屏幕顶端即可,这样看起来就像重新生成了一个障碍物,但实际上至始至终只有一个障碍物,只是不停变换位置,这样做简化了实现,也节省了资源

[amazon_link asins=’B0746C94ZW,B077ND7YJ4,B077BVZKZ4′ template=’CopyOf-ProductGrid’ store=’boyd-23′ marketplace=’CN’ link_id=”]

实现

接下来是实现的部分,我们需要用到两个无限循环,分别实现小亮点的逻辑和障碍物逻辑,会生成 4 个精灵 (实际上是代表精灵的变量),1 个代表小亮点,3 个障碍物精灵,还需要 2 个变量,xsudux 用于接受生成的随机数并设置 3 个障碍物精灵的横坐标,sudu 用于控制障碍物的下降速度,打开 micro:bit在线编程网站,开始一一实现,

开机初始化

  1. 在 变量 分类下用 变量 模块设置 6 个变量,分别为 x、sudu、spirt(代表小亮点)、zhangai1(代表最左边障碍精灵)、zhangai2(代表中间障碍精灵)、zhangai3(代表最右边障碍精灵)
  2. 设置 x 的值为 随机数模块产生 0 到 2的随机数
  3. 设置 sudu 的值为 600
  4. 设置 spirt 为 游戏 分类下的 创建精灵 模块,x 坐标填 变量 2,y 坐标填 4,保证 小亮点初始状态在屏幕底部中间
  5. 设置 zhangai1 为 创建精灵 模块,x 坐标填 变量 x,y 坐标填 0
  6. 设置 zhangai2 为 创建精灵 模块,x 坐标填 变量 x + 1,y 坐标填 0
  7. 设置 zhangai3 为 创建精灵 模块,x 坐标填 变量 x + 2,y 坐标填

    Micro bit 躲避砖块小游戏-基础部分

小亮点部分

  1. 每次循环判断 x 方向加速度,如果 大于 200,spirt x 坐标加 1,暂停 200ms
  2. 每次循环判断 x 方向加速度,如果 小于 -200,spirt x 坐标减 1,暂停 200ms

    Micro bit 躲避砖块小游戏-基础部分

障碍物部分

  1. 每次循环 3 个障碍物精灵 y 坐标 减 1
  2. 判断 如果 spirt 碰到 zhangai1 或者 spirt 碰到 zhangai2 或者 spirt 碰到 zhangai3,则 游戏结束
  3. 如果 zhangai1(或者zhangai2 或 zhangai3)的 y 坐标为 4,则 重新生成一个 0 到 2 的随机数,设置 给 变量 x
  4. 用变量 x 设置 zhangai1 的坐标 x 坐标 为 变量 x,y 坐标 为 0
  5. 用变量 x 设置 zhangai2 的坐标 x 坐标 为 变量 x + 1,y 坐标 为 0
  6. 用变量 x 设置 zhangai3 的坐标 x 坐标 为 变量 x + 2,y 坐标 为 0
  7. 暂停变量 sudu 时间

    Micro bit 躲避砖块小游戏-基础部分

大功告成,快自己试试看吧。

在下一节的教程里,我们将继续丰富这个小游戏,加上开头动画,记分系统,在游戏结束时展示分数等功能,敬请期待啦。

hex 文件下载: hex 文件(请右键另存为)

如果你喜欢这篇文章,或者有任何问题,可以在下方的评论区留言啦

原文始发于微信公众号( 暴王不暴燥 ):Micro bit 躲避砖块小游戏-基础部分

4.6 10 votes
Article Rating
Subscribe
Notify of
guest

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

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x