- 履歴一覧
- ソース を表示
- 2011b/A1/セレン は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
終了する度にデータが消えてしまうためここに記録
#define BLACK 40
#define RUN_TIME 250
#define SHORTCUT_TIME 300
#define RUN_TIME 300
#define SHORTCUT_TIME 450
#define c 523
#define d 587
#define e 659
#define f 698
#define g 784
#define a 880
#define b 988
#define C 1047
sub go_ahead()
{OnFwd(OUT_A+OUT_C);}
sub go_back()
{OnRev(OUT_A+OUT_C);}
sub turn_right()
{OnFwd(OUT_A); Off(OUT_C);}
sub turn_left()
{OnFwd(OUT_C); Off(OUT_A);}
sub spin_right()
{OnFwd(OUT_A); OnRev(OUT_C);}
sub spin_left()
{OnFwd(OUT_C); OnRev(OUT_A);}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int count_line;
int count;
OnFwd(OUT_B);
count_line = 0;
while(count_line == 0){ //スタート〜鋭角
count = 0;
while(count == 0){ //スタート〜鋭角
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_back();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left(); Wait(40); go_ahead(); Wait(100); count_line++; PlayTone(c,10);}
{spin_left(); Wait(40); go_ahead(); Wait(70); count++; PlayTone(c,10);}
}
while(count_line == 1){ //鋭角〜交差点(1回目)
while(count == 1){ //鋭角〜交差点
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(30); count_line++; PlayTone(d,10);}
{go_ahead(); Wait(30); count++; PlayTone(d,10);}
}
while(count_line == 2){ //ヘアピン〜交差点(2回目)
while(count == 2){ //ヘアピン〜交差点
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(30); count_line++; PlayTone(e,10);}
{go_ahead(); Wait(30); count++; PlayTone(e,10);}
}
while(count_line == 3){ //ロータリー進入
while(count == 3){ //ロータリー進入
go_ahead();
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{PlayTone(f,10); turn_right(); Wait(120); go_ahead(); Wait(10); count_line++;}
{PlayTone(f,10); turn_right(); Wait(140); go_ahead(); Wait(10); count++;}
}
while(count_line == 4){ //ロータリー通過(1)
while(count == 4){ //ロータリー(1)
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(20); count_line++; PlayTone(g,10);}
{go_ahead(); Wait(20); count++; PlayTone(g,10);}
}
while(count_line == 5){ //ロータリー通過(2)
while(count == 5){ //ロータリー(2)
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{turn_right(); Wait(120); count_line++; PlayTone(g,10);}
{turn_right(); Wait(140); count++; PlayTone(a,10);}
}
ClearTimer(0);
while(count_line == 6 && FastTimer(0) <= RUN_TIME){ //直角前
ClearTimer(0); //直角前
while(count == 6 && FastTimer(0) <= RUN_TIME){
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
}
ClearTimer(1);
while(count_line == 6 && FastTimer(1) > SHORTCUT_TIME) //ショートカット
{PlayTone(a,10); turn_left(); Wait(80); Off(OUT_A+OUT_C); Wait(300); go_ahead();
while(count == 6 && FastTimer(0) > RUN_TIME) //近道進入
{turn_left(); Wait(150); count++; PlayTone(b,10);}
while(count == 7){ //近道
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(15); turn_left(); Wait(150); count++; PlayTone(C,10);}
}
while(count == 8){ //直角後
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{turn_right(); Wait(240); count++; PlayTone(b,10);}
}
while(count == 9){ //ロータリー(3)
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(20); count++; PlayTone(a,10);}
}
while(count == 10){ //ロータリー(4)
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{turn_right(); Wait(140); count++; PlayTone(g,10);}
}
while(count == 11){ //ロータリー〜交差点
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(30); count++; PlayTone(f,10);}
}
while(count == 12){ //ヘアピン〜交差点
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right();}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead(); Wait(30); count++; PlayTone(e,10);}
}
while(count == 13){ //交差点〜鋭角
if(SENSOR_1 > BLACK && SENSOR_3 > BLACK)
{go_ahead();}
if(SENSOR_1 <= BLACK && SENSOR_3 > BLACK)
{spin_left();}
if(SENSOR_1 > BLACK && SENSOR_3 <= BLACK)
{spin_right(); Wait(250); Off(OUT_A+OUT_C);}
if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
{go_ahead();}
}
}