- 追加された行はこの色です。
- 削除された行はこの色です。
#define OPEN 1
#define GO 2
#define PUT 3
#define BACK 4
#define THERESHOLD 47
#define HIGHESTPOWER 7
#define HIPOWER 1
#define LOWPOWER 0
#define set_power_HE SetPower(OUT_AC,HIGHESTPOWER);
#define HIPOWER 3
#define LOWPOWER 2
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnFwd(OUT_AC);
#define go_forward set_power_H; OnRev(OUT_AC);
#define turn_left1 set_power_L;\
OnFwd(OUT_C); OnRev(OUT_A);
OnFwd(OUT_A); OnRev(OUT_C);
#define turn_left0 set_power_L;\
OnFwd(OUT_C); Off(OUT_A);
OnRev(OUT_C); Off(OUT_A);
#define turn_right0 set_power_L;\
OnFwd(OUT_A); Off(OUT_C);
OnRev(OUT_A); Off(OUT_C);
#define turn_right1 set_power_L;\
OnFwd(OUT_A); OnRev(OUT_C);
OnFwd(OUT_C); OnRev(OUT_A);
#define STEP 1
#define nMAX 35
#define short_break Off(OUT_AC); Wait(100);
#define cross_line go_forward set_power_H;\
OnFwd(OUT_AC); Wait(20); short_break;
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int nOnline=0;
ClearTimer(1);
while (FastTimer(1) <= 500) {
go_forward;
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
until (Message() == GO);
go_forward;
}
ClearTimer(0);
until (Message() == BACK);
OnRev(OUT_AC);
Wait(100);
until (Message() == GO);
while (true) {
while (FastTimer(0) < nMAX) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
if (nOnline == 8) {
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(300);
SendMessage(PUT);
}
until (Message() == GO);
while (FastTimer(0) < nMAX) {
if (SENSOR_1 < THERESHOLD -4) {
turn_right1;
} else {
if (SENSOR_1 < THERESHOLD -2) {
turn_right0;
} else if (SENSOR_1 < THERESHOLD +2) {
go_forward;
} else if (SENSOR_1 < THERESHOLD +4) {
turn_left0;
} else {
turn_left1;
}
ClearTimer(0);
}
Wait(STEP);
}
turn_left1; Wait(nMAX*STEP);
cross_line;
nOnline++;
PlaySound(SOUND_CLICK);
ClearTimer(0);
if (nOnline == 8) {
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(300);
SendMessage(PUT);
}
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
ClearTimer(0);
until (Message() == BACK);
OnRev(OUT_AC);
Wait(100);
}
}
#define OPEN 1
#define GO 2
#define PUT 3
#define BACK 4
#define PowerA SetPower(OUT_A,0);
#define PowerB SetPower(OUT_A,7);
#define PowerC SetPower(OUT_C,0);
#define PowerD SetPower(OUT_C,3);
#define PowerD SetPower(OUT_C,10);
task main()
{
ClearMessage();
while (true) {
PowerC; OnFwd(OUT_C);
until (Message() == OPEN);
PowerA; OnRev(OUT_A);
Wait(40);
PowerC; OnRev(OUT_C);
Wait(50);
Wait(90);
PowerB; OnFwd(OUT_A);
Wait(40);
PowerD; OnFwd(OUT_C);
Wait(120);
Wait(160);
SendMessage(GO);
PowerC; OnFwd(OUT_C);
until (Message() == PUT);
PowerC; OnRev(OUT_C);
Wait(50);
PowerA; OnRev(OUT_A);
Wait(40);
SendMessage(BACK);
}
Wait(10);
}