- 追加された行はこの色です。
- 削除された行はこの色です。
俺に名前は必要ない。なぜなら羽田空港のビルだからだ。
しかも二番目の存在。だが、俺はそれでもいいと思っている。
自分の地位も名誉も、名前同様俺には必要ない。
俺に必要なのはエビフライだ。
#define blackline 40
#define TURN_TIME 200
sub go(){
OnFwd (OUT_A+OUT_C);
}
sub back(){
OnRev (OUT_A+OUT_C);
}
sub turn_R(){
OnFwd (OUT_A+OUT_C);Wait(050);
OnRev (OUT_C);Wait(200);Off(OUT_A+OUT_C);
}
sub turn_L(){
OnFwd (OUT_C+OUT_A);Wait(050);
OnRev (OUT_A);Wait(200);Off(OUT_A+OUT_C);
}
sub hold_can(){
OnFwd(OUT_B);Wait(150);Off(OUT_B);
}
sub part_can(){
OnRev(OUT_B);Wait(150);Off(OUT_B);
}
task main(){
SetSensor (SENSOR_1, SENSOR_LIGHT);
SetSensor (SENSOR_3, SENSOR_LIGHT);
while(true){
ClearMessage();
until(Message() = 0);
hold_can();
back();
if((SENSOR_1<=blackline)&&(SENSOR_3>=blackline)){
OnFwd (OUT_A);OnRev (OUT_C);Wait(10);
}else{
back();
}
if((SENSOR_1>=blackline)&&(SENSOR_3<=blackline)){
OnFwd (OUT_C);OnRev (OUT_A);Wait(10);
}else{
back();
}
until((SENSOR_1<=blackline)&&(SENSOR_3<=blackline));
back();
until((SENSOR_1>=blackline)&&(SENSOR_3>=blackline));
back();
if((SENSOR_1<=blackline)&&(SENSOR_3>=blackline)){
OnFwd (OUT_A);OnRev (OUT_C);Wait(10);
}else{
back();
}
if((SENSOR_1>=blackline)&&(SENSOR_3<=blackline)){
OnFwd (OUT_C);OnRev (OUT_A);Wait(10);
}else{
back();
}
until((SENSOR_1<=blackline)&&(SENSOR_3<=blackline));
back();
until((SENSOR_1>=blackline)&&(SENSOR_3>=blackline));
turn_R();
go();
if ((SENSOR_1<=blackline)&&(SENSOR_3>=blackline)){
OnFwd (OUT_C);OnRev (OUT_A);Wait(10);
}else{
go();
}
if ((SENSOR_1>=blackline)&&(SENSOR_3<=blackline)){
OnFwd (OUT_A);OnRev (OUT_C);Wait(10);
}else{
go();
}
until((SENSOR_1<=blackline)&&(SENSOR_3<=blackline));
go();
until((SENSOR_1>=blackline)&&(SENSOR_3>=blackline));
go();
until((SENSOR_1<=blackline)&&(SENSOR_3<=blackline));
turn_R();
part_can();
go();Wait(300);
}
}
#define blackline 30
#define Go_time 200
int frag;
int timer;
sub linetrace (){
if ((SENSOR_1 <= blackline) && (SENSOR_2 <= blackline)){
OnRev(OUT_A + OUT_C);
Wait(020);
if ((SENSOR_1 <= blackline) && (SENSOR_3 <= blackline)){
OnFwd(OUT_A + OUT_C);
Wait(030);
frag++;
}
else{
if ((SENSOR_1 <= blackline) && (SENSOR_3 >= blackline)){
OnFwd (OUT_A);OnRev (OUT_C);
OnRev(OUT_A);OnFwd(OUT_C);
}
if ((SENSOR_1 >= blackline) && (SENSOR_3 <= blackline)){
OnFwd (OUT_C);OnRev (OUT_A);
OnFwd(OUT_C);OnRev(OUT_A);
}
if ((SENSOR_1 >= blackline) && (SENSOR_3 >= blackline)){
OnRev (OUT_A + OUT_C);
OnFwd(OUT_A + OUT_C);
}
}
}
}
sub hold_can (){
OnFwd (OUT_B);
Wait (150);
Wait (020);
OnFwd(OUT_B);
Wait(150);
Off(OUT_B);
OnRev(OUT_A+OUT_B);
Wait(Go_time+300);
}
sub port_can (){
OnRev (OUT_B);
OnRev(OUT_B);
Wait (250);
Off (OUT_B);
Off(OUT_B);
OnFwd (OUT_A+OUT_C);
Wait (040);
Off (OUT_A+OUT_C);
}
sub go_straight (){
OnFwd (OUT_A+OUT_C);
}
sub go_down (){
OnRev (OUT_A+OUT_C);
}
sub turn_R (){
Off (OUT_A + OUT_C);OnRev (OUT_A+OUT_C);Wait (007);OnFwd(OUT_A);Wait (080);Off (OUT_A+OUT_C);
Off (OUT_A + OUT_C);OnRev (OUT_A+OUT_C);Wait (030);OnFwd (OUT_A);Wait (150);Off (OUT_A+OUT_C);
}
sub turn_L (){
Off (OUT_A + OUT_C);OnRev (OUT_C+OUT_A);Wait (007);OnFwd(OUT_C);Wait (080);Off (OUT_A+OUT_C);
Off (OUT_A + OUT_C);OnRev (OUT_C+OUT_A);Wait (030);OnFwd(OUT_C);Wait (150);Off (OUT_A+OUT_C);
}
task main(){
SetSensor (SENSOR_1, SENSOR_LIGHT);
SetSensor (SENSOR_3, SENSOR_LIGHT);
frag=0;
timer=0;
while (true){
if (frag == 0 || 3 || 4 || 7){
linetrace ();
if (frag == 0){
hold_can();
go_down ();
until((SENSOR_1<=blackline)&&(SENSOR_3<=blackline));
OnFwd(OUT_A);OnRev(OUT_C);
until((SENSOR_1<=blackline)&&(SENSOR_3>=blackline));
linetrace();
}
if (frag == 1){
linetrace ();
ClearTimer (0);
linetrace();
}
if (frag == 2){
timer = FastTimer (0);
turn_R ();
frag = 3;
OnFwd(OUT_A);OnRev(OUT_C);
until((SENSOR_1<=blackline)&&(SENSOR_3>=blackline));
linetrace();
}
if (frag == 5){
turn_L ();
hold_can ();
linetrace ();
if (frag == 3){
port_can();
frag=0;
}
if (frag == 6){
turn_L ();
frag = 7;
}
if (frag == 8){
turn_R ();
port_can ();
frag = 0;
}
}
}