[[2006a/C2/課題3左]]

 #define go_straight OnFwd(OUT_A+OUT_C);
 #define Standard_of_light 50
 #define turn_time 200
 #define Borderline_S 5
 #define Borderline_L 20
  int light_max=0;
  int time=0;
  
 
 
 task play_Ride_of_the_Vallyries()
 {
 #define vfa3 349*vk
 #define vra 440*vk
 #define vsi 494*vk
 #define vDo 523*vk
 #define vre 587*vk
 #define vmi 659*vk
 #define vfa 698*vk
 #define vfa2 740*vk
 #define vra2 880*vk
 #define vn 3
 #define vt 5
 #define vk 1
 #define vT 1
 
       while(true){
 
     PlayTone(vsi,6*vn);Wait(6*vn+vt);
     PlayTone(vfa3,2*vn);Wait(2*vn+vt);Wait(vn);
     PlayTone(vsi,3*vn);Wait(3*vn+vt);Wait(vn);
     PlayTone(vre,12*vn);Wait(12*vn+vt);
     PlayTone(vsi,12*vn);Wait(12*vn+vt);
  
     PlayTone(vre,6*vn);Wait(6*vn+vt);
     PlayTone(vsi,2*vn);Wait(2*vn+vt);Wait(vn);
     PlayTone(vre,3*vn);Wait(3*vn+vt);Wait(vn);
     PlayTone(vfa2,12*vn);Wait(12*vn+vt);
     PlayTone(vre,12*vn);Wait(12*vn+vt);
 
     PlayTone(vfa2,6*vn);Wait(6*vn+vt);
     PlayTone(vre,2*vn);Wait(2*vn+vt);Wait(vn);
     PlayTone(vfa2,3*vn);Wait(3*vn+vt);Wait(vn);
     PlayTone(vra2,12*vn);Wait(12*vn+vt);
     PlayTone(vra,12*vn);Wait(12*vn+vt);
 
     PlayTone(vre,12*vn);Wait(12*vn+vt);
     PlayTone(vra,4*vn);Wait(4*vn+vt);Wait(vn*2);
     PlayTone(vre,6*vn);Wait(6*vn+vt);Wait(vn*2);
     PlayTone(vfa2,24*vn);Wait(24*vn+vt);
               }
  }
 
 sub follow_light()
 {
 
     while(((SENSOR_1<Standard_of_light)|| (SENSOR_1<Standard_of_light)))
 
      {                  int d;
     d=SENSOR_1-SENSOR_3;
 
        if ((-Borderline_S <= d) && (d <= Borderline_S))
                 {OnFwd(OUT_A+OUT_C);}        //go
 
         if ((Borderline_S <d) && (d< Borderline_L))
                  {OnFwd(OUT_C);Float(OUT_A);} //sllowly_turn_right
 
         if (( Borderline_L <=d) && (d<= 100))
                  {OnFwd(OUT_C);OnRev(OUT_A);} //rapidly_turn_rigth
 
         if ((-Borderline_L <=d) && (d<-Borderline_S))
                  {OnFwd(OUT_A);Float(OUT_C);} //sllowly_turn_left
 
         if((-100 <=d) && (d< -Borderline_L))
                  {OnFwd(OUT_A);OnRev(OUT_C);} //rapidly_turn_left
        }
 
      }
 
 sub look_for_light()
  {
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
         int light_max=0;
         int time=0;
 
        time=FastTimer(0);
        light_max=SENSOR_1;
        start play_Ride_of_the_Vallyries ;
    ClearTimer(0);
 
    while(FastTimer(0)<=turn_time){
     
            OnFwd(OUT_C);OnRev(OUT_A);
 
        if(SENSOR_1>light_max)
          { time=FastTimer(0);
          light_max=SENSOR_1;}
 
         }
 
    Off(OUT_A+OUT_C); Wait(50);
		OnFwd(OUT_A);OnRev(OUT_C); Wait(turn_time-time);
    Off(OUT_A+OUT_C); Wait(50);
 
 
                }
 
		 
 task main()
   {
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    SetSensor(SENSOR_3,SENSOR_LIGHT);
 
           look_for_light();
      
         while(true){
               if((SENSOR_1<Standard_of_light)||(SENSOR_1<Standard_of_light)) {
                  follow_light();
             }if((SENSOR_1<Standard_of_light) && (SENSOR_3<Standard_of_light)){
              look_for_light();
              stop play_Ride_of_the_Vallyries;}
             }
 
    }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS