Page Title

第4课 按钮的使用——幸运轮盘灯


2019-08-05 17:37:30

图片.png 

图片.png

很多游戏中都需要选定角色、排次序、分配任务等,大家往往采用抽签、石头剪刀布、比大小等方法来解决,今天好搭BOX给大家带来一个游戏辅助小帮手幸运轮盘灯,你可以用它随机选人、排序、抽签……更多更多的功能等你去发现。

 

 

图片.png 

幸运轮盘灯是通过按钮的不同控制方法,让很多灯能够进行随机的变换。

上次我们学习的彩色LED灯便可以作为轮盘灯,另外,好搭BOX还给大家带来了一个控制工具——按键,下面我们来一起认识一下。

按键模块                                              图片.png


图片.png

4-1 按键模块


模块中有“上”、“中”、“下”、“左”、“右”五个按键,可以作为开关使用(如上图4-1所示)。按键有按下弹起两种状态。默认状态是弹起;当用手指按住按键帽往下按、并且保持不动的时候,就处于按下状态;松开手指,按键又会重回处于弹起状态

图片.png                      图片.png

使用这个指令可以判断按键是否处于“按下”状态,中间的下拉菜单可以选择“上”、“下”、“左”、“右”、“中”五个按键。

图片.png 

要制作本课的范例作品,可以按以下步骤先连接硬件、连接网络,然后进入“好好搭搭”网站编写、调试、编译、下载程序。

准备工作:搭建硬件、连接网络、进入网站                        

图片.png 

第一步:搭建硬件、连接网络。将按钮模块和彩色LED模块放置于主控板上任意六边形区域,磁铁吸合(如下图4-2所示);打开主控板的电源开关,等待主控板连接网络成功。


图片.png

4-2 “幸运轮盘灯”范例作品硬件连接图

第二步:进入网站。打开浏览器,登录“好好搭搭”网站;单击网站上方的“创作”按钮,在“无线编程”网页中选择“好搭BOX智能实验箱”模板,进入程序设计页。

 

用彩色LED模块制作的幸运轮盘灯,需要结合上节课学习的不同灯光效果的制作。本节课主要强调按键对于灯的启停和灯光秀的启停控制,以及一个按键和多个按键对于同一个效果的控制。

案例一:单按键控制灯亮灭                       

图片.png 

单击 “输入”类别,找到读按键值的语句,并将这条指令拖动到脚本区。在生活当中用按键去控制灯的开与关是非常普遍的,那下面我们就再请出彩色LED尝试用按钮来控制一个灯的亮灭,当按钮处于“按下”状态时,彩色LED灯的第一个灯亮红光,其他五个灯处于灭的状态 ;当按钮处于“弹起”状态时,第一个灯也处于灭的状态。具体程序代码如下图4-3所示:


图片.png

4-3“单按键控制灯的亮灭”程序代码

如果-执行-否则指令是如果执行指令变形而来的,变形操作如下:


图片.png

 

图片.png 

图片.png用单按键控制灯光秀的起停,按“中”按钮,彩色LED6个灯随机显示,松开之后,随机停止,只保留一个灯亮。

我发现:________________________________________________________________

_______________________________________________________________________

案例二:单按键控制全部灯的亮灭

图片.png 

在第3课“炫彩灯光秀”的案例2中学会了如何点亮全部的LED灯,需要重复设置LED灯珠的显示状态,使用这种方式在控制较多的LED灯时就会过于麻烦。可以新建变量后使用“声明并赋值”命令搭配“重复执行指定次数”指令,就能够将LED灯全部点亮。例如当按钮处于“按下”状态时,重复执行6次点亮LED灯的所有灯珠。

下面新建一个名为Num”的变量为例,可以先单击变量指令类别中的创建变量按钮,在打开的新变量的名称对话框中(如下图所示)输入变量为Num,输入完成后单击确定按钮,就会在变量指令类别中新建这个变量。如下图4-4所示:


blob.png 

4-4“新建变量”对话框

变量创建完成后,在编写程序时,还需要先声明变量类别。也就是将变量指令类别中的声明并赋值指令拖动到编程区,与默认的初始化指令组合,再将数字与逻辑指令类别中数值输入指令作为声明并赋值指令的参数设置数值输入指令参数为1具体初始化程序代码如下图4-5所示:


图片.png 

4-5“初始化中声明并赋值变量”程序代码

初始化脚本中声明变量后,可以在重复执行脚本中使用“赋值”指令累加变量的值,点亮全部LED先赋值Num”为1,后执行“重复执行6次”脚本,在此脚本中先点亮第1个彩色LED灯,后累加6次“Num”的值,点亮剩余的彩色LED灯,具体程序代码如下图4-6所示:


图片.png

4-6“单按键控制全部灯的亮灭”程序代码

图片.png 

图片.png用单按键搭配变量控制灯光秀的起停,按“中”按钮,彩色LED6个灯顺序显示和熄灭,松开之后停止,只保留一个灯亮。

我发现:________________________________________________________________

_______________________________________________________________________

 

案例三:双按键控制灯的亮灭

图片.png 

以上我们通过单按键的实时状态来控制灯的亮灭,例如当按键一直处于“按下”状态时,灯点亮,若是按键处于“弹起”状态时灯便熄灭。那如何能让灯在读取到按键“按下”状态时点亮,而当按键变为“弹起”状态时还是依然点亮呢?

下面我们先使用两个按键来帮助我们实现以上效果例如按一下“上”按键,全部灯点亮,按一下“下”按键,全部灯熄灭。具体程序代码如下图4-7所示:


图片.png 

4-7 “双按键控制灯随机点亮”程序代码

图片.png 

图片.png用以上双按键控制方法,尝试控制灯光秀的亮灭,即按下“左”按钮,彩色LED6个灯随机显示,按下“右”按键,停止随机显示并且所有灯熄灭。请你观察是否能够实现想要的效果呢?

我发现:________________________________________________________________

______________________________________________________________________ 

通过以上尝试我们可以发现:若是“上”按键被按下,灯光秀程序启动,那么我们就必须一直按住“上”按键,才能保证灯光秀程序启动的条件成立,如果我们还是想要实现按一下“上”按键之后,灯光秀就能持续工作,那么就必须找一个能够记住按键状态值的工具,我们的老朋友——变量,就可以帮我们实现以上的效果,下面我们一起来试一试。具体程序代码如下图4-8所示:

案例四: 双按键控制灯光秀的起停                       

图片.png 


图片.png

4-8 “双按键控制灯光秀起停”程序代码

 

 

图片.png 

上一节课我们学习了多种灯光变换的效果,按键模块中也有五个按键,那是否可以实现一个按键控制一种灯光效果的起停呢?即按下某一个按钮后松开,启动一种灯光效果,再按下该按钮后松开,关闭该种灯光效果。假设“中”按键控制彩色LED灯的亮灭,按一下按键后松开,彩色LED全部亮起,再按一下按键松开,彩色LED灯全部熄灭,如此循环。 

我打算这么做:_______________________________________________________

______________________________________________________________________

做的时候需要注意:____________________________________________________

______________________________________________________________________