- 追加された行はこの色です。
- 削除された行はこの色です。
#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 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 turn_left1 set_power_L;\
OnFwd(OUT_C); OnRev(OUT_A);
#define turn_left0 set_power_L;\
OnFwd(OUT_C); Off(OUT_A);
#define turn_right0 set_power_L;\
OnFwd(OUT_A); Off(OUT_C);
#define turn_right1 set_power_L;\
OnFwd(OUT_A); OnRev(OUT_C);
#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;
go_forward;
if (SENSOR_3 > 48) {
SendMessage(OPEN);
Off(OUT_AC);
}
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);
}
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(Z);
SendMessage(PUT);
}
}
ClearTimer(0);
}