容器的容器是 Robolab 软件教程中最容易混淆的功能之一, 但有些时候他又非常的有用,小孩子们可以理解为容器的容器的值所指定的那个容器,就像 C 语言中变量的指针变量一样,听起来有些难以理解,看下面段程序:
程序的开始将 2 个容器清零,分别是 0 号容器(红色容器)和 4 号容器,然后赋值,参数容器的容器的意义在于 4 号容器的值所代表的相应的标号的容器, 因为 4 号容器的值为“0” ,所以 0 号容器作为赋值的对象容器,被赋值 10,其结果就是在接下来的显示程序中,红色容器显示 10,4 秒钟之后,4 号容器显示的值依然为 0。为了更加说明容器的容器的美妙用途,我们花点儿时间来看个例子
程序范例:
设计一个密码锁,用两个触碰传感器作为输入键盘,1 号触感代表数字“1” ,2 号触感代表数字“2” ,依次输入 4 位密码,如果输入正确,则奏响音乐表示密码正确,如果任何一位输入错误,则程序报警并终止。对于这个程序,关键在于四位密码是预先存储在 NXT 内部的,而密码的比对要一位一位的进行,密码的位数可以看成是存有密码数据的容器的指针,利用容器的容器轻松解决这个问题:
将密码赋值到 3、4、5、6 号容器中,在此例中设为左、右、左、右,红色容器用于存储用户输入的密码值,而蓝色容器的值指定了密码存放的起始号码。
密码总共为 4 位, 所以设定 4 次的 loop 循环,左触感按下向红色容器赋 1,右侧按下赋 2,代表用户的输入。用跳转命令等待用户输入
密码的判断需要一位的进行,第一次蓝色容器的值为 3, 所以容器的容器指定 3 号容器为分支判断的参数容器,与用户输入数(红色容器数值)进行比较正确则继续,蓝色容器加 1,准备比较下一位密码;错误则报警并用蓝色跳转退出程序。其中等待 0.2 秒,为避免用户按下时程序执行太快造成多次输入。
本站内容未经许可,禁止任何网站及个人进行转载。