[[2005/B2]]
*キャタピラのモーターとライントレース用光センサーのプログラム [#p1275a28]
制作者:05F5033E ケンタ
int box_color;
int magaru = 400;
sub cub()
{
OnFwd(OUT_A+OUT_C);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
if (SENSOR_1 < 45)
{
OnFwd(OUT_C);OnRev(OUT_A);
}
if (SENSOR_3 < 45)
{
OnFwd(OUT_A);OnRev(OUT_C);
}
if ((SENSOR_1 > 45) && (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
}
Off(OUT_A+OUT_C);
}
sub hirou_hazime()
{
Off(OUT_A+OUT_C);
SendMessage(31);Wait(200);
Off(OUT_A+OUT_C);
until(Message() == 32);
OnRev(OUT_A+OUT_C);Wait(100);
Off(OUT_A+OUT_C);
SendMessage(33);Wait(300);
Off(OUT_A+OUT_C);
until(Message() == 34);
OnFwd(OUT_A+OUT_C);Wait(70);
}
sub kago()
{
OnFwd(OUT_A+OUT_C);Wait(100);
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
OnRev(OUT_A+OUT_C);Wait(150);
Off(OUT_A+OUT_C);
SendMessage(3);Wait(200);
until (Message() == 21);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
}
task main()
{
SetPower(OUT_A,8);
SetPower(OUT_C,8);
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearMessage();
Off(OUT_A+OUT_C);Wait(100);
//hirou
hirou_hazime();
//susumu
OnFwd(OUT_A+OUT_C);
until (SENSOR_1< 45 && SENSOR_3 < 45);
OnFwd(OUT_A+OUT_C);Wait(40);
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
cub();
OnRev(OUT_A+OUT_C);Wait(100);
OnFwd(OUT_C);OnRev(OUT_A);Wait(200);
OnFwd(OUT_A+OUT_C);Wait(2300);
OnFwd(OUT_C);OnRev(OUT_A);Wait(200);
OnFwd(OUT_A+OUT_C);Wait(110);
OnFwd(OUT_A);OnRev(OUT_C);Wait(100);
OnFwd(OUT_A+OUT_C);Wait(150);
cub();
Off(OUT_A+OUT_C);
SendMessage(10);Wait(200);
ClearMessage();Wait(200);
while(Message() !=0 )
{
//box orosu
if ( Message() ==1 )
{
PlaySound(SOUND_DOWN);Wait(100);
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
if ( Message() == 2 )
{
PlaySound(SOUND_DOWN);Wait(100);
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
if ( Message() == 3 )
{
PlaySound(SOUND_DOWN);Wait(100);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
if ( Message() == 4 )
{
PlaySound(SOUND_DOWN);Wait(100);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
if ( Message() == 5 )
{
PlaySound(SOUND_DOWN);Wait(100);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
if ( Message() == 6 )
{
PlaySound(SOUND_DOWN);Wait(100);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnFwd(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);Wait(20);
}
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
kago();
OnFwd(OUT_C);OnRev(OUT_A);Wait(magaru);
while((SENSOR_1 > 45) || (SENSOR_3 > 45))
{
OnRev(OUT_A+OUT_C);
}
Off(OUT_A+OUT_C);
}
}
ClearMessage();
//modoru
OnFwd(OUT_A);OnRev(OUT_C);Wait(magaru * 2);
cub();
}