SoundTurtleを使うと、MP3、WAVE、MIDI形式のファイルを制御して、音を鳴らすことができます。
MP3、WAVE、MIDI以外のファイルを鳴らしたい場合は、変換サイトで対応できるファイル形式に変換してください。
まず再生するファイルを指定して、SoundTurtleオブジェクトを作成します。
SoundTurtle bgm = new SoundTurtle("bgm.mp3");
そして、作成したSoundTurtleオブジェクトに対して、play() や stop() などの命令を行います。
bgm.play(); //BGMを再生する bgm.stop(); //BGMを停止する
音の再生時に反応速度が重要な場合は、あらかじめ音を読み込んでおくこと、再生するまでの反応速度を早くすることができます。
SoundTurtle fire = new SoundTurtle("fire.mp3"); fire.loadOnMemory();// あらかじめ効果音を読み込んでおく fire.play();// 効果音を再生する
ただし、再生時間が長い大きなファイルを読み込む場合は、それだけメモリが必要になります。
「ゲームを作ろう」で紹介したシューティングゲームに、効果音をつけましょう。
次の2つの場合において、好きな音を鳴らして下さい。
ファイル名は「SoundEffect.java」とすること.
「ゲームを作ろう」で紹介したシューティングゲームに、BGMをつけましょう。
ファイル名は「BGM.java」とすること.
1: /** 2: * シューティングゲーム(音付き) 3: * 4: * Yoshiaki Matsuzawa (2011/09/28) 5: */ 6: public class ShootingGameWithSound extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new ShootingGameWithSound()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: System.out.println("ShootingGameWithSound: Version 8"); 16: 17: hide();// タートルを消す 18: 19: // 画面の調整 20: window.size(640, 480); 21: window.warp(100, 100); 22: 23: int score; // 得点を入れる変数 24: 25: // キャラクターの生成 26: Star enemy = new Star(); // enemyという名前の星を生成 27: Doraemon player = new Doraemon(); // playerという名前のドラえもんを生成 28: Circle bullet = new Circle(); // bullet(弾)という名前の円を作成 29: 30: // 得点板の生成 31: TextTurtle scoreBoard = new TextTurtle(); // scoreBoardという名前のTextTurtleを生成 32: 33: // 音楽の生成 34: SoundTurtle hit = new SoundTurtle("hit.mp3"); 35: hit.loadOnMemory(); 36: SoundTurtle fire = new SoundTurtle("fire.mp3"); 37: fire.loadOnMemory(); 38: 39: SoundTurtle bgm = new SoundTurtle("bgm.mp3"); 40: // BSound bgm = new BSound("bgm.mp3"); 41: bgm.play(); 42: 43: // 弾を適切な大きさに調整 44: bullet.size(20, 20); 45: 46: // キャラクターの位置を調整 47: enemy.warp(200, 100); 48: player.warp(320, 350); 49: bullet.warp(-100, -100);// 弾は最初見えない位置に置いておく 50: 51: // 得点板の位置を調整 52: scoreBoard.warp(600, 50); 53: 54: // 得点を初期化 55: score = 0; 56: 57: while (true) { 58: 59: // --- 待つ --- 60: sleep(0.025); 61: 62: // --- 処理 --- 63: 64: // 敵を動かす(流れ星と一緒) 65: enemy.warp(enemy.x() + 5, enemy.y()); 66: enemy.rt(10); 67: 68: // もし,敵が右端だったら 69: if (enemy.x() > 640) { 70: enemy.warp(0, enemy.y());// 左端にワープ 71: } 72: 73: // ドラえもんを左右に動かす 74: if (key() == 37) { // 左 75: player.warp(player.x() - 5, player.y()); 76: } else if (key() == 39) { // 右 77: player.warp(player.x() + 5, player.y()); 78: } 79: 80: // 上が押されたら, 81: if (key() == 38) { 82: // 弾を出す(弾をドラえもんと同じ位置にする) 83: bullet.warp(player.x(), player.y()); 84: fire.play(); 85: } 86: 87: // 弾を上に動かす 88: // (見えなくても,上に動かしつづける) 89: bullet.warp(bullet.x(), bullet.y() - 5); 90: 91: // もし,弾が敵に当たっていたら 92: if (bullet.intersects(enemy)) { 93: score++;// 得点を増やす 94: 95: // 衝突音を鳴らす 96: hit.play(); 97: } 98: 99: // 得点板の数字を更新 100: scoreBoard.text(score); 101: 102: // --- 再描画 --- 103: update(); 104: } 105: 106: } 107: 108: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、ShootingGameWithSoundプログラムが実行できます。