- 履歴一覧
- ソース を表示
- 2011b/A1/セレン は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
終了する度にデータが消えてしまうためここに記録
#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();
}