内容简介:本篇是 Micro:bit 躲避砖块小游戏系列教程的第 4 篇,前 3 篇分别是关于 精灵、无限循环 和 led 点阵及坐标的知识,详见
本篇是 Micro:bit 躲避砖块小游戏系列教程的第 4 篇,前 3 篇分别是 Micro:bit 模拟传球小程序 ,Micro:bit 重力控制 和 从超级玛丽看游戏制作基本要素 ,这篇教程我们将一步步的完成 躲避砖块小游戏 的基础部分,能够通过重力控制小亮点躲避天上掉下来的砖块,一旦碰到砖块,游戏结束,按照惯例,我们先来看看效果
知识点
-
精灵
-
无限循环
-
led 点阵 及 坐标
-
x 方向上的加速度
-
随机数模块
-
碰撞检测模块
-
游戏结束模块
知识点解析
关于 精灵、无限循环 和 led 点阵及坐标的知识,详见 Micro:bit 模拟传球小程序 关于 各个方向上的加速度获取及计算,详见Micro:bit 重力控制
随机数模块
随机数模块是我们将要使用的新模块,用于随机生成一个数字,随机数模块位于 数学 分类
随机数模块可用于生成一个 0 到 x 的随机数,生成随机数的过程,我们可以想象为一个扔色子的过程,假如我们需要生成一个范围从 0 到 2 的随机数,我们可以想象我们有一个 3 面的色子,3 个面上分别标有 0 1 2,生成随机数就相当于扔了一次色子,然后看哪个面朝上,最后我们得到的就是那个生成的随机数
碰撞检测模块
碰撞检测模块是另一个新模块,用于检测两个精灵是否发生碰撞,如果碰到了,返回 true,如果没碰到返回 false,它是这个躲避砖块小游戏判断胜负的关键,一旦玩家控制的小亮点碰到了障碍,游戏结束。碰撞检测模块位于 游戏 分类下
游戏结束模块
顾名思义,在游戏结束时使用的模块,效果是闪三下屏幕,然后滚动播放 “GAME OVER” 字符,也位于 游戏 分类
实现原理
实现逻辑大体分为两部分,玩家控制的小亮点部分和随机生成的障碍物部分,为了实现简便,我们这里设定
-
小亮点只能在屏幕底部左右移动
-
障碍物长度固定为 3
-
障碍物下降速度不变
-
小亮点碰到障碍物游戏结束
-
由于屏幕大小限制,同一时间内只会出现一个障碍物,待一个障碍物下降到底部时,再生成另一个障碍物
下面分别讲讲两部分的逻辑
小亮点部分
小亮点的部分相对简单,甚至比第 2 篇Micro:bit 重力控制 里的水平仪还要简单,因为设定小亮点只能在屏幕底部左右移动,因此我们可以只考虑 x 方向加速度,实现也与Micro:bit 重力控制 里的实现类似,每间隔 200ms 检测一次 x 方向上的加速度,当加速度大于 200 时,向右移动一格,小于 -200 时,向左移动一格
障碍物部分
障碍物的部分稍微复杂一些,既要考虑障碍物的生成位置,也要考虑障碍物的消失问题,并且障碍物会一直下降,直到到达屏幕底部消失,或者碰到小亮点游戏结束,具体分析如下,
-
需要设定一个速度变量,使得每一个新生成的障碍物都使用这个变量的值下降
-
由于设定障碍物长度固定为 3,所以需要创建 3 个精灵,最左边的精灵横坐标为 x,右边第 2 个和第 3 个精灵的横坐标分别为 x + 1 和 x + 2 ,三个精灵的纵坐标都为 y,下降的过程就是 y 依次增加的过程
-
关于障碍物的位置,只需要确定最左边的障碍物精灵的 x 坐标位置即可,由于障碍物的长度为3,因此最左边障碍物精灵的 x 坐标的可能值为 0,1,2,下图中分别用 蓝 红 绿方框表示一个障碍物可能的位置,因此对于最左边的障碍物精灵,可能的坐标是 (0,0) (1,0) 或 (2,0),因此我们只需要用随机数模块产生 0 到 2的随机数就可以控制障碍物的生成位置了
-
障碍物在下降过程中要不断检测有没有和小亮点碰撞,如果碰到了则游戏结束,如果没碰到则游戏继续,需要生成新的障碍物
-
当障碍物到达屏幕底部,即 y 坐标为 4 时,应该隐藏该障碍物并从顶部重新生成障碍物,但是因为我们设定同时只有一个障碍物出现在屏幕里,因此当障碍物到达底部时,我们只需更改原来障碍物的坐标,使它重新出现在屏幕顶端即可,这样看起来就像重新生成了一个障碍物,但实际上至始至终只有一个障碍物,只是不停变换位置,这样做简化了实现,也节省了资源
实现
接下来是实现的部分,我们需要用到两个无限循环,分别实现小亮点的逻辑和障碍物逻辑,会生成 4 个精灵 (实际上是代表精灵的变量),1 个代表小亮点,3 个障碍物精灵,还需要 2 个变量, x 和 sudu , x 用于接受生成的随机数并设置 3 个障碍物精灵的横坐标, sudu 用于控制障碍物的下降速度,打开 micro:bit在线编程网站 ,开始一一实现,
开机初始化
-
在 变量 分类下用 变量 模块设置 6 个变量,分别为 x、sudu、spirt(代表小亮点)、zhangai1(代表最左边障碍精灵)、zhangai2(代表中间障碍精灵)、zhangai3(代表最右边障碍精灵)
-
设置 x 的值为 随机数模块产生 0 到 2的随机数
-
设置 sudu 的值为 600
-
设置 spirt 为 游戏 分类下的 创建精灵 模块,x 坐标填 变量 2,y 坐标填 4,保证 小亮点初始状态在屏幕底部中间
-
设置 zhangai1 为 创建精灵 模块,x 坐标填 变量 x,y 坐标填 0
-
设置 zhangai2 为 创建精灵 模块,x 坐标填 变量 x + 1,y 坐标填 0
-
设置 zhangai3 为 创建精灵 模块,x 坐标填 变量 x + 2,y 坐标填
小亮点部分
-
每次循环判断 x 方向加速度,如果 大于 200,spirt x 坐标加 1,暂停 200ms
-
每次循环判断 x 方向加速度,如果 小于 -200,spirt x 坐标减 1,暂停 200ms
障碍物部分
-
每次循环 3 个障碍物精灵 y 坐标 减 1
-
判断 如果 spirt 碰到 zhangai1 或者 spirt 碰到 zhangai2 或者 spirt 碰到 zhangai3,则 游戏结束
-
如果 zhangai1(或者zhangai2 或 zhangai3)的 y 坐标为 4,则 重新生成一个 0 到 2 的随机数,设置 给 变量 x
-
用变量 x 设置 zhangai1 的坐标 x 坐标 为 变量 x,y 坐标 为 0
-
用变量 x 设置 zhangai2 的坐标 x 坐标 为 变量 x + 1,y 坐标 为 0
-
用变量 x 设置 zhangai3 的坐标 x 坐标 为 变量 x + 2,y 坐标 为 0
-
暂停变量 sudu 时间
大功告成,快自己试试看吧。
在下一节的教程里,我们将继续丰富这个小游戏,加上开头动画,记分系统,在游戏结束时展示分数等功能,敬请期待啦。
如果你喜欢这篇文章,或者有任何问题,可以在下方的评论区留言啦
原文始发于微信公众号( 暴王不暴燥 ): Micro bit 躲避砖块小游戏-基础部分
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Micro:bit 躲避砖块小游戏-附加功能
- 增加使用Delphi Packer来躲避恶意软件分类
- Syborg:一款带有断路躲避系统的DNS子域名递归枚举工具
- 利用强化学习来躲避基于机器学习的静态恶意PE文件检测模型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编写可维护的JavaScript
扎卡斯 / 李晶、郭凯、张散集 / 人民邮电出版社 / 2013-4 / 55.00元
《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。《编写可维护的JavaScript》内容涵盖了编码风格、编程技巧、自动化、测试等几方面,既包括具体风格和原则的介绍,也包括示例和技巧说明,最后还介绍了如何通过自动化的工具和方法来实现一致的编程风格。 《编写可维护的Ja......一起来看看 《编写可维护的JavaScript》 这本书的介绍吧!