*プログラム[#a360d923] #define MOVE_TIME1 700000 #define MOVE_TIME2 40000 #define nMAX1 3000 #define nMAX2 350 #define THRESHOLD 55 #define SPEED_H 30 #define SPEED_L 25 #define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL); #define go_forward OnRL(SPEED_H,SPEED_H);//直進 #define turn_left1 OnRL(SPEED_L,-SPEED_L);//左旋回 #define turn_left2 OnRL(SPEED_L,0);//左回転 #define turn_right1 OnRL(-SPEED_L,SPEED_L);//右旋回 #define turn_right2 OnRL(0,SPEED_L);//右回転 #define STEP 1 #define short_break Off(OUT_BC);Wait(100); #define CROSS_TIME 210 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break;//交差点通過 task main() { SetSensorLight(S1); long t0=CurrentTick(); while(CurrentTick()-t0<MOVE_TIME2){//急カーブ用プログラム int nOnline=0; while(nOnline<nMAX2){ if(SENSOR_1<THRESHOLD-4){ turn_left2; nOnline++; } else { if(SENSOR_1<THRESHOLD){ turn_left2; } else if(SENSOR_1<THRESHOLD+7){ go_forward; } else if(SENSOR_1<THRESHOLD+10){ turn_right2; } else{ turn_right1; } nOnline=0; } } Wait(STEP); short_break; PlaySound(SOUND_DOUBLE_BEEP); turn_right2;Wait(nMAX2); cross_line; nOnline=0; } go_forward;Wait(1800);//タイミングを見計らって、交差点に関係なく直進 while(CurrentTick()-t0<MOVE_TIME1){//急カーブ用プログラム int nOnline=0; while(nOnline<nMAX1){ if(SENSOR_1<THRESHOLD-4){ turn_left1; nOnline++; } else { if(SENSOR_1<THRESHOLD+7){ go_forward; } else if(SENSOR_1<THRESHOLD+10){ turn_right2; } else{ turn_right1; } nOnline=0; } } Wait(STEP); short_break; turn_right1;Wait(nMAX1*STEP); cross_line; nOnline=0; } }//MOVETIME1+2以内にゴールイン *反省 [#z50d13f3] +直角を攻略するプログラムが必要のないコースになってしまった。 +やむを得ず、交差点を無視して通り過ぎることになってしまった。 +パートナーとの会う時間を設けるのが難しかった。 +特定されたコースしか攻略できないプログラムになってしまった。 -直角を攻略するプログラムが必要のないコースになってしまった。 -やむを得ず、交差点を無視して通り過ぎることになってしまった。 -パートナーとの会う時間を設けるのが難しかった。 -特定されたコースしか攻略できないプログラムになってしまった。