2011-08-25 12 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

非常感謝你。這正是我需要的。我是一個新的程序員,所以我很懷念這些微妙的效率。 –