多语言展示
当前在线:460今日阅读:60今日分享:41

乐高EV3我的模块PlayNumber(输入数字)

作为EV3编程软件的一强大的部分,我的模块用处广泛,编几个常用的我的模块也是有必要的。今天,我来教大家编辑一个可以方便输入数字的我的模块PlayNumber。
工具/原料
1

LEGO MINDSTORMS Education/Home Edition EV3编程软件

2

EV3程序块

思路
1

整体思路是:先调整数字的个位,然后是十位,接下来是百位,以此类推。要注意的是,输入数字时,要从末尾开始,一直到首位,这和我们写数字时不同,要注意。

2

变量:循环索引变量LoopIndex:储存循环索引,避免数据线临时数字a:在调整一位数字时使用的数字储存变量总数n:最后输入的数字

3

我的模块:说起来你也许会觉得奇怪。这个我的模块PlayNumber也是一个比较复杂的我的模块了,所以这里面的我的模块还是很有必要的。Reset:初始化变量a与nSetNumber:调整一位数字ProduceNumber:将输入的一位数字加入总数值n

子我的模块Reset(重置)

这个我的模块很简单,就是初始化两个变量a与n,a的数值设为5,为了方便调整。n为0.

子我的模块SetNumber(调整数字)
1

这个模块思路是,用上下键调整一位数字,为保证范围要在0-9之间,还要用到范围模块。(这个我的模块内的变量均为a)

2

切换模块:设置为程序块按钮模式的测量,设置三个分支项,上键,下键,不按键

3

(先说“上键”分支)我希望用户能在按键有效下收到提示,所以添加声音模块,声音设为click,(其实一般是要设成播放一次的,但是这个声音文件比较短,所以也没有多大问题);又因为“按下”对于EV3来说是个瞬时动作,所以后面的等待0.2秒是很有必要的。(可以想一想,不加等待模块是什么情况)

4

重头戏来了!范围模块郑重入场!(注解见图片)。然后后面加入一个逻辑模式比较模块

5

比较模块逻辑模式真:将a变量数字加一返还给变量a,显示在屏幕上(文本>网格,1行,1列),不要清屏!

6

比较模块逻辑模式伪:如果数值要成为2位数了,那么发出警报,提醒用户,亮红灯常量1秒

7

(再说那个大的切换模块的伪分支)把真分支的模块复制过来,进行以下修改:· 范围改为在1-9之内· 计算“+”改为“-”(不按键大分支没有任何模块)(下图是整个SetNumber内容)

子我的模块ProduceNumber
1

在ProduceNumber我的模块中,将我的模块SetNumber调好的变量a加入变量n,思路是通过一个公式得出要加入的实际数字。(学过小学两年级的人应该知道,每位上的数字代表的实际含义是不一样的,如个位3代表3,百位8代表800)

2

怎么算出实际数字呢?让变量a进行以下运算:a乘以10的“循环索引变量LoopIndex”次幂,即a*(10^LoopIndex)(加个括号,以防万一)10^0=110^1=1010^2=100乘上因数a。不错,这正是我们想要的效果!

3

然后让这个实际数字加上变量n,返还给变量n。n的数值就更新了。为了让用户知道这一点,将这个数字显示在屏幕上(模式为文本>网格,5行,0列。同样,不要清屏!),顺便,利用文本合并模块加一个下划线“_”在前面,提醒用户应该输哪一位了。

4

子 我的模块ProduceNumber的最后程序如图所示。

我的模块PlayNumber
1

第一个模块想想就知道,Reset呗,然后第二个显示模块……诶这个符号好像在哪里见过,不就是显示下划线嘛!(功能见ProduceNumber第三步)这里要清除屏幕了,让下划线显示在5行,0列。

2

加入循环,名称设为Program,将循环索引放进变量LoopIndex里去。然后又是一个循环,名为Set(这里面循环套循环,切换套切换可真多),初始化程序块的灯光(也可以设为绿灯不闪烁。)(还记得吗,SetNumber模块里有将颜色调成红的,这是为了调回来加入的)。把SetNumber模块放进去。对了,循环模式要改成程序块按钮>比较,设为中心键被触碰(就是双箭头的那个),Set循环后面加上Produce我的模块。最外面的Program循环模式不用改(无限制)。

3

好像差不多了。有哪里不对劲……什么鬼,无限制循环?没有终止循环模块,哪有门去执行后面的程序啊(注意,这只是一个我的模块),在开始模块后面,添加另一个分支。等待右键被按下,然后退出Program循环。

4

整个我的模块PlayNumber:(建议你在建造我的模块时,简介输的认真一点,以后如果忘了这个模块用来干嘛的,可以通过“帮助>显示上下文帮助”来查看简介)

挑战!
1

这里面有个Bug,当a=0时,“0”不会被显示出来,尝试去改进。(提示:可以使用比较,切换,文本合并)

2

的确,只能自右往左输入数字,如果要从左往右的话,就要复杂了,目前小编还没有编出这种的,但是我已经有思路了,建议大家挑战一下(提示:可以使用阵列)

注意事项
1

记住:从右往左输入你要输的数字

2

在将这个我的模块加入你的程序后,在新程序的界面上设置一下变量哦(反正我是设置了,没试过不设置,怕死机)

推荐信息