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

#define BLACK 40
#define RUN_TIME 300
#define c 523
#define d 587
#define e 659
#define f 698
#define g 784
#define a 880
#define b 988
#define C 1047
int count;

sub go_ahead()
{OnFwd(OUT_A+OUT_C);}

sub go_back()
{OnRev(OUT_A+OUT_C);}

sub spin_right()
{OnFwd(OUT_A); OnRev(OUT_C);}

sub spin_left()
{OnFwd(OUT_C); OnRev(OUT_A);}

void switchback()     //スタート〜鋭角
{
    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(70); count++; PlayTone(c,10);}
     }
}

void hairpin1()     //ヘアピン(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++; PlayTone(d,10);}
     }

    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++; PlayTone(e,10);}
     }
}

void enter_rotary()     //ロータリー進入
{
    while(count==3){
    go_ahead();
    if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
    {PlayTone(f,10); go_ahead(); Wait(50); spin_right(); Wait(80); go_ahead(); Wait(10); count++;}
     }
}

void rotary1()     //ロータリー(1)
{
    while(count==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)
    {go_ahead(); Wait(20); count++; PlayTone(g,10);}
     }

    while(count==5){     
    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(50); spin_right(); Wait(80); count++; PlayTone(a,10);}
     }
}

void corner1()     //直角前  
{
    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();}
     }

    while(count==6 && FastTimer(0)>RUN_TIME)     //近道進入
    {go_ahead(); Wait(80); spin_left(); Wait(120); go_ahead(); Wait(50); count++; PlayTone(b,10);}
}

void shortcut()     //近道
{
    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(50); spin_left(); Wait(80); go_ahead(); Wait(50); count++; PlayTone(C,10);}
     }
}

void corner2()     //直角後
{
    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)
    {go_ahead(); Wait(50); spin_right(); Wait(80); go_ahead(); Wait(10); count++; PlayTone(C,10);}
     }
}

void rotary2()     //ロータリー(2)
{
    while(count==9){
    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(b,10);}
     }

    while(count==10){     
    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(50); spin_right(); Wait(80); count++; PlayTone(a,10);}
     }
}

void hairpin2()     //ヘアピン(2)
{
    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(50); count++; PlayTone(g,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(f,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)
    {go_ahead(); Wait(50); spin_right(); Wait(120); count++; PlayTone(e,10);}
    if(SENSOR_1 <= BLACK && SENSOR_3 <= BLACK)
    {go_ahead();}
     }
}

task main()
{
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    SetSensor(SENSOR_3,SENSOR_LIGHT);
    count = 0;

    switchback();
    hairpin1();
    enter_rotary();
    rotary1();
    corner1();
    shortcut();
    corner2();
    rotary2();
    hairpin2();
}


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