2011-08-25 48 views
1

我正在为爱宝ERS-7在Urbi进行一个项目。由于URBI 2不适用于阿宝,我使用了以下内容:Urbi“switch”声明错误

URBI Language specif 1.0 - Copyright (C) 2005-2008 Gostai SAS 
URBI Kernel version 1.5 rev. 51997ef 

我不知道为什么下面的代码生成错误。当听到巨大的噪音时,它打算做一个随机动作。代码如下。

motor on; 
robot.initial(); 
robot.stretch(); 

whenever (micro.volume >= 1000) 
{ 
    randomval = random(16); 
    switch (randomval) 
    { 
    case 0: //LF1 
     legLF1.val = (random(254) - 120); 
    case 1: //LF2 
     legLF2.val = (random(100) - 9); 
    case 2: //LF3 
     legLF3.val = (random(148) - 29); 
    case 3: //RF1 
     legRF1.val = (random(254) - 134); 
    case 4: //RF2 
     legRF2.val = (random(100) - 9); 
    case 5: //RF3 
     legRF3.val = (random(148) - 29); 
    case 6: //LH1 
     legLH1.val = (random(254) - 120); 
    case 7: //LH2 
     legLH2.val = (random(100) - 9); 
    case 8: //LH3 
     legLH3.val = (random(148) - 29); 
    case 9: //RH1 
     legRH1.val = (random(254) - 134); 
    case 10: //RH2 
     legRH2.val = (random(100) - 9); 
    case 11: //RH3 
     legRH1.val = (random(148) - 29); 
    case 12: //neck 
     neck.val = (random(80) - 2); 
    case 13: //headTilt 
     headTilt.val = (random(60) - 16); 
    case 14: //headPan 
     neck.val = (random(182) - 91); 
    case 15: //mouth 
     mouth.val = (random(55) - 58); 
    } 
}; 

所产生的错误如下:

/MS/clap.u:50.10: syntax error, unexpected (
[0000037549]!!! 22.1-15: Error loading file: clap.u 
[0000037549]!!! 22.1-15: Error with function eval: U596213128.load [nb param=1] 
[0000037549]!!! 22.1-15: EXPR evaluation failed 

从我的理解,它不喜欢的“开关”行括号。在我使用的版本中,我没有真正看到“开关”的引用,并且它突出显示,如果它存在于Gostai编辑器中,但在最新版本的更新日志中没有提及它。它是否存在,如果是这样,我做错了什么。如果它不存在,我应该使用一堆if语句(请不要)。

回答

2

在urbi 1.0中确实没有开关/外壳。

一堆IFS的一个更好的选择是使用数组存储设备和参数:

var devices = [legLF1, legLF2, ...]; 
var ranges = [254, 100, ...]; 
var offsets = [...]; 

devices[randomval].val = random(ranges[randomval]) + offsets[randomval]; 
+0

非常感谢你。这正是我需要的。我是一个新的程序员,所以我很怀念这些微妙的效率。 –