本帖最后由 dfrobot 于 2019-11-18 15:39 编辑
micro:bit造物粒子(基于Mind+)13— 拆弹游戏
麦克的故事小朋友们要来麦克家里做客了,麦克很高兴,麦克想把自己最喜欢的玩具拿出来和小朋友们分享,有遥控汽车,遥控飞机 麦克觉得这些玩具没有什么新奇的,怎样才能够做一个属于麦克的游戏呢?麦克决定用micro:bit和BOSON做一个炫酷的游戏——拆弹游戏,考验一下小伙伴们的反应能力吧。 所需元件
1×micro:bit主控板 1×micro:bit扩展板 1× 彩虹灯带
1× MicroUSB 连接线
实现功能启动micro:bit之后,LED灯模拟的引线会开始燃烧,当引线烧至最后时炸弹会引爆。麦克需要在炸弹引爆前,根据micro:bit提示的方向依次将板子向不同的方向倾斜,快速解锁炸弹才能避免“**”。 这样的拆弹装置由三个部分组成: 1. 动作识别:用来识别倾斜的方向是否和指示的方向一致。 2. 灯光交互:为LED灯设置引线燃烧的效果,经过时间越长剩余点亮的LED灯越少。 3. 计分系统:在LED灯全部熄灭之前完成20个动作则拆弹成功;LED灯全部熄灭时仍然没有完成,则判定游戏结束。 硬件连接
将彩虹灯带接在扩展板的P0号接口。 编写程序STEP1:动作识别 首先我们需要让micro:bit能够产生并显示随机的方向,在我们向该方向倾斜操作时能识别出来,随后随机显示下一个方向。这样的一个程序的流程图大致如下。
在游戏过程中,只有当我们的操作与随机产生的指示箭头一致时,才会进行下一步操作,否则一直保持当前的箭头方向。 怎样产生随机方向呢?
可以用0~3四个数字代表四个方向,使用数学Math下的子模块产生随机数模块“选取0至( )”来从0~3四个数字中随机选择一个数字。 建立一个函数“产生随机方向”,对应产生的随机数,显示不同的箭头。 怎样判读倾斜操作的实际方向呢?
通过在输入input下的姿势识别模块来读取micro:bit的倾斜方向,并且分别对应到0~3中。 通过一个如果if语句条件判断,操作方向与目标方向是否一致。 这个部分的完整程序为: 注意:“如果为While语句”用于保证两次随机出现的方向不相同。 STEP2:制作炸弹程序
炸弹的效果通过彩色灯带显示,使用灯带来模拟炸弹的保险丝。随着时间的推移,保险丝上的led灯珠将会以稳定的速度相继熄灭。所以反应速度越快,小灯剩余数量越多。 怎么实现倒计时? 建立时间函数,通过计数的形式,设置每次计时的时间间隔,为(1*100)*100ms.一次计时间隔结束,小灯数量减1.
注意:因为micro:bit在处理数据时会消耗到一定的时间,所以倒计时模块实际运行时会走得慢一些。 时间倒计时的同时,小灯的显示部分: 这个部分的完整程序: STEP3:增加计分功能 在操作过程中,每次操作方向和目标方向一致,积一分,直到积满20分,并且此时LED灯珠数量大于0,那么挑战成功,拆单成功,最终得分为LED灯珠剩余个数;否则,失败。
流程图大致如下: 判断是否成功及失败的程序如下: 计分部分可以合并在主程序中 STEP4:最终程序。
能力提升1.尝试加快LED灯的熄灭速度,增加游戏难度; 2.将上下左右方向用其他图形替代,挑战更高难度的下的反应力。 希望你的micro:bit之旅不会止步,用你的奇思妙想,玩出更多新颖有创意的作品。如果你愿意与我们分享的话,也可以直接登陆我们的论坛,让我们的社区论坛记录下你的点点滴滴! 欢迎登陆DFRobot创客社区!
Mind+最早是由DFRobot公司于2013年推出的图形化编程软件,能够让不懂编程的艺术家们通过几分钟的学习即可控制Arduino开源硬件,从而拓宽一些新的思维方式
|