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

栏目: 后端 · 发布时间: 7年前

内容简介:本篇是 Micro:bit 躲避砖块小游戏系列教程的第 4 篇,前 3 篇分别是关于 精灵、无限循环 和 led 点阵及坐标的知识,详见

本篇是 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 时,应该隐藏该障碍物并从顶部重新生成障碍物,但是因为我们设定同时只有一个障碍物出现在屏幕里,因此当障碍物到达底部时,我们只需更改原来障碍物的坐标,使它重新出现在屏幕顶端即可,这样看起来就像重新生成了一个障碍物,但实际上至始至终只有一个障碍物,只是不停变换位置,这样做简化了实现,也节省了资源

实现

接下来是实现的部分,我们需要用到两个无限循环,分别实现小亮点的逻辑和障碍物逻辑,会生成 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 躲避砖块小游戏-基础部分

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

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

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Two Scoops of Django

Two Scoops of Django

Daniel Greenfeld、Audrey M. Roy / CreateSpace Independent Publishing Platform / 2013-4-16 / USD 29.95

Two Scoops of Django: Best Practices For Django 1.5 is chock-full of material that will help you with your Django projects. We'll introduce you to various tips, tricks, patterns, code snippets, and......一起来看看 《Two Scoops of Django》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具