音楽が流れるロボ

/*パッヘルベルのカノン*/
//周波数
#define Do1 523
#define Re1 587
#define Mi1 659
#define Fa1 698
#define So1 784
#define Ra1 880
#define Si1 988
#define Do2 1047
#define Re2 1175
#define Mi2 1319
#define Fa2 1397
#define So2 1568
//音の長さ
#define tone_1(s) PlayTone(s, 10); Wait(15);//sは周波数
#define tone_2(s) PlayTone(s, 25); Wait(30);
task music(){
  tone_2(So2);
  tone_1(Mi2);
  tone_1(Fa2);
  tone_2(So2);
  tone_1(Mi2);
  tone_1(Fa2);
  tone_1(So2);
  tone_1(So1);
  tone_1(Ra1);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(Re2);
  tone_1(Mi2);
  tone_1(Fa2);

  tone_2(Mi2);
  tone_1(Do2);
  tone_1(Re2);
  tone_2(Mi2);
  tone_1(Mi1);
  tone_1(Fa1);
  tone_1(So1);
  tone_1(Ra1);
  tone_1(So1);
  tone_1(Fa1);
  tone_1(So1);
  tone_1(Mi1);
  tone_1(Fa1);
  tone_1(So1);

  tone_2(Fa1);
  tone_1(Ra1);
  tone_1(So1);
  tone_2(Fa1);
  tone_1(Mi1);
  tone_1(Re1);
  tone_1(Mi1);
  tone_1(Re1);
  tone_1(Do1);
  tone_1(Re1);
  tone_1(Mi1);
  tone_1(Fa1);
  tone_1(So1);
  tone_1(Ra1);

  tone_2(Fa1);
  tone_1(Ra1);
  tone_1(So1);
  tone_2(Ra1);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(So1);
  tone_1(Ra1);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(Re2);
  tone_1(Mi2);
  tone_1(Fa2);
  tone_1(So2);

  tone_2(Mi2);
  tone_1(Do2);
  tone_1(Re2);
  tone_2(Mi2);
  tone_1(Re2);
  tone_1(Do2);
  tone_1(Re2);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(Re2);
  tone_1(Mi2);
  tone_1(Re2);
  tone_1(Do2);
  tone_1(Si1);

  tone_2(Do2);
  tone_1(Ra1);
  tone_1(Si1);
  tone_2(Do2);
  tone_1(Do1);
  tone_1(Re1);
  tone_1(Mi1);
  tone_1(Fa1);
  tone_1(Mi1);
  tone_1(Re1);
  tone_1(Mi1);
  tone_1(Do2);
  tone_1(Si1);
  tone_1(Do2);

  tone_2(Ra1);
  tone_1(Do2);
  tone_1(Si1);
  tone_2(Ra1);
  tone_1(So1);
  tone_1(Fa1);
  tone_1(So1);
  tone_1(Fa1);
  tone_1(Mi1);
  tone_1(Fa1);
  tone_1(So1);
  tone_1(Ra1);
  tone_1(Si1);
  tone_1(Do2); 

  tone_2(Ra1);
  tone_1(Do2);
  tone_1(Si1);
  tone_2(Do2);
  tone_1(Si1);
  tone_1(Ra1);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(Re2);
  tone_1(Do2);
  tone_1(Si1);
  tone_1(Do2);
  tone_1(Ra1);
  tone_1(Si1);
  PlayTone(Do2, 20); Wait(50);
}
task main(){
 SetSensor(SENSOR_1, SENSOR_LIGHT);
 while(true){
   if(SENSOR_1>50){
      start music;
      OnFwd(OUT_A+OUT_C);
   }
   else{
      stop music;
      PlaySound(SOUND_DOUBLE_BEEP);
      OnRev(OUT_A+OUT_C);
   }
 }
}

曲の部分がものすごく長いです。がんばって書いたので載せてみました(追記:MacNQCのPiano Panelを使えばいちいち書かなくても良いので、楽です)。音の長さが2種類しかないので、#defineを使って定義してあります。光センサーの値が50より大きいときに音楽を流しながら前進し、そうでないときはピーッ、ピーッという音を出して後退します。


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