終了する度にデータが消えてしまうためここに記録

#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();}
     }
}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS