110. 程式架構
c = -key[KEY_UP];
c = c | -(key[KEY_LEFT]<<1);
c = c | -(key[KEY_RIGHT]<<2);
c = c | -(key[KEY_DOWN]<<3);
c = c | -(key[KEY_SPACE]<<4);
switch(c){
case 1: STATE = FORWARD; break;
case 2: STATE = LEFTWARD; break;
case 4: STATE = RIGHTWARD; break;
case 8: STATE = BACKWARD; break;
case 16:STATE = EXIT; break;
default: STATE = IDLE; break;
}
Get input state
111. 程式架構
Get input state
接收各個 state 的輸入
鍵盤
加速度計
超音波感測器
…
112. 程式架構
while(STATE != EXIT){
GetInput();
switch(STATE){
case FORWARD:
case BACKWARD:
case RIGHTWARD:
case LEFTWARD:
PlayMotion(); break;
case IDLE: Idle(); break;
case BALANCE: Stable(); break;
default: break;
}
}
Update state & play action state