2004/C6/ボロット

パックを持ち上げるロボット

#define migi OUT_A

#define hidari OUT_C

#define ageru OUT_B

#define midori 39

task main()

{SetSensor(SENSOR_2,SENSOR_TOUCH);      //壁に当たると反応するタッチセンサー
 SetSensor(SENSOR_1,SENSOR_LIGHT);   //ライントレース用の光センサー
 OnRev(migi+hidari); Wait(300);         //緑の線までバック

 OnRev(migi+hidari);   until(SENSOR_1 == midori);

 Off(migi+hidari);
 Off(migi); OnFwd(hidari); Wait(250);   //左を向く
 Off(migi+hidari); Wait(100);
 ClearTimer(0);
  while(Timer(0) <= 35)         //3.5秒間緑の線をトレース
  {if(SENSOR_1 < midori)
   {OnFwd(hidari); Off(migi);}
   else{Off(hidari); OnFwd(migi);}}

 OnFwd(migi); OnRev(hidari); Wait(110); //右を向く

 Off(migi+hidari); Wait(100);
 OnRev(migi+hidari);                    //少しバック
  until(SENSOR_1 == midori);
 OnRev(migi+hidari); Wait(150);
 Off(migi+hidari); Wait(100);
 repeat(25){                            //以下の動作を25回繰り返す

  SetSensor(SENSOR_3,SENSOR_LIGHT);   //パックに反応する光センサー

  if(SENSOR_3 < 36)          //ロボの前にパックがきたら
  {PlaySound(SOUND_UP);
    OnFwd(ageru);OnFwd(migi+hidari);  //壁に当たるまで前進
     until(SENSOR_2 == 1);
    Off(migi+hidari);Wait(100);
    OnFor(ageru,1500);         //15秒間パックを持ち上げる動作をする
    OnRev(migi+hidari); Wait(200);   //少しバック
    Off(migi+hidari);}
 }

}

パックを集めてくるロボット

#include "spy.nqh"

#define migi OUT_A

#define hidari OUT_B

task main()

{OnFwd(migi+hidari); Wait(700);      //前進してUターンする
 Off(migi+hidari); Wait(50);
 OnFwd(hidari);Off(migi); Wait(600);
 Off(migi+hidari); Wait(50);
repeat(15)              //以下の動作を15回繰り返す
{Wait(100);
 OnFwd(migi+hidari);         //壁に当たるまで前進
  until(SENSOR_1==1);                 //SENSOR_1はタッチセンサー
 Off(migi+hidari); Wait(50);
 OnRev(migi+hidari); Wait(45);    //少しバック
 Off(migi+hidari); Wait(50);
 OnFwd(migi); SetPower(migi,7); Off(hidari); Wait(300);  //左を向く
 Off(migi+hidari); Wait(50);
 OnFwd(migi+hidari); Wait(100);    //少し前進して、持ち上げるロボの前にパックを置く
 Off(migi+hidari); Wait(50);
 OnRev(migi+hidari); Wait(300);    //少しバック
 Off(migi+hidari); Wait(50);
 OnFwd(migi); SetPower(migi,7); Off(hidari); Wait(280);  //左を向く
 OnFwd(migi+hidari); Wait(500);    //前進
 Off(migi+hidari); Wait(50);
 OnFwd(hidari);Off(migi); Wait(550);  //Uターン
 Off(migi+hidari); Wait(50);
}

}

邪魔をするロボット

task main() {

OnFwd(OUT_A);              //前進
PlaySound(SOUND_CLICK); Wait(200);       //意味なくいろんな音を出す
PlaySound(SOUND_DOUBLE_BEEP); Wait(200);
PlaySound(SOUND_DOWN); Wait(200);
PlaySound(SOUND_UP); Wait(200);
PlaySound(SOUND_LOW_BEEP); Wait(200);
PlaySound(SOUND_FAST_UP); Wait(200);

repeat(10){               //以下の動作を10回繰り返す
ClearTimer(0);         
while(Timer(0) <=50){SendMessage(0);}  //妨害電波を出しながら時々バック 
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=100){SendMessage(1);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=150){SendMessage(2);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=200){SendMessage(3);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=250){SendMessage(4);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=300){SendMessage(5);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=350){SendMessage(6);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=400){SendMessage(7);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=450){SendMessage(8);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=500){SendMessage(9);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=550){SendMessage(10);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=600){SendMessage(11);} 
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=650){SendMessage(12);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=700){SendMessage(13);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=750){SendMessage(14);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=800){SendMessage(15);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=850){SendMessage(16);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=900){SendMessage(17);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=950){SendMessage(18);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=1000){SendMessage(19);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
while(Timer(0) <=1050){SendMessage(20);}
OnRev(OUT_A); Wait(50);
OnFwd(OUT_A);
}

}


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-02-22 (火) 17:05:26