2013/12/06

プログラミング講座(139) サイモンというゲーム

Small Basic Forum の今月のチャレンジに「サイモン ゲームのクローンを作れ」という問題があり、早速作りました。プログラムID FHV760-5 として発行しました。

図135 サイモン
【図135 サイモン】

作った手順は以下の通りです。

最初に作ったプログラム FHV760 で4つの色のボタンのマスクになる部分を表示し、Snipping Tool で png ファイルとして保存し、GIMP でトリミングし背景部分を透明にしました。

図136 マスク
【図136 マスク】

このマスクを Shapes.AddImage() で図形として読み込み、移動、回転、不透明度を設定しボタンの明るさを変えています。ボタンが消えているときは不透明度 50、付いているときは不透明度 0 に設定しています。

その後はサイモン側のプレイ PlaySeq() とプレイヤー側の入力部分 GetSeq() を作って組み合わせました。

このゲームは前回のコネクト4に比べると簡単に作れると思います。サイモンは1978年に米国で発売されたゲーム機で、難しさのレベル設定もできますが、今回のプログラムでは間違えない限り、限りなく音のシーケンスが長くなるようにしています。

| | コメント (0) | トラックバック (0)

2012/08/08

プログラミング講座(69) Small Basic の音楽機能

これまで一度も扱っていなかったので、Small Basic の音楽機能について説明します。

Sound.PlayMusic() という操作で音を鳴らすことができます。この操作の引数には、MML (Music Markup Language) を指定します。

MMLには以下のコマンドがあります。

(1) 音程 (A, B, C, D, E, F, G)
  このA~Gまでのコマンドは音程を表します。これはそれぞれA=ラ、B=シ、C=ド、D=レ、E=ミ、F=ファ、G=ソに対応しています。このコマンドの後に#, +(♯), -(♭)を付け加えて半音を表すことができます。

(2) 休符 (R)
  このコマンドは休符を指定します。

(3) 音長 (Ln)
  このコマンドは音長を指定します。nは1~64の整数で1の時を最大とした音分数の逆数が値となります。このコマンドから以降は、指定した音長で演奏されます。また音程、休符のコマンドの後にnを追加すると、その音だけその音長で演奏されます。

 4分音符のド …… L4C または C4
  16分音符のファの♯ …… L16F# または F#16 または F+16
  全音符のソの♭ …… L1G- または G-1

(4) オクターブ (On)
  このコマンドはオクターブを指定します。nは1~8までの整数です。なお、標準周波数440Hzのラの音(A)はオクターブ4(O4)です。

サンプルプログラムを ZWF718-1 として発行しましたので、参考にして下さい。
【図70 Piano 0.1】
【図70 Piano 0.1】

※ 上記、MMLの解説については、『FM-7 F-BASIC文法書』を参照しました。

『FM-7 F-BASIC文法書』

| | コメント (2) | トラックバック (0)

2012/05/07

JavaScript (3) Audio でサウンド再生

phi さんのブログの記事「JavaScript で HTML5 Audio を使ってサウンド再生. 連続再生対策してるからゲームの SE にも使えるよん♪」にトラックバックしています。

上記の記事の内容を元にJavaScriptから Audio を再生するプログラムを作りました。sound.js で公開します。Java の囲碁プログラムで使っていた3つの効果音(着手のときの音、ボタンを押したときの音、エラー時の音)を再生できます。

図2 Audio 再生ボタン
【図2 Audio 再生ボタン】

Java のプログラミングではフリーの .wav 形式の音源を .au 形式に変換して利用しましたが、JavaScript では、複数のブラウザに対応するため、 .wav, .mp3, .ogg の3つの形式を用意します。変換にはフリーソフト Switch を利用しました。

絵が描けて、音が出せれば、ゲームは作れそうですよね。

(つづく)

| | コメント (0) | トラックバック (0)

2012/02/14

Javaアプレット(42) 碁石の表示と効果音

いよいよ囲碁局面についてグラフ理論を用いたクラスPosを使って、石を並べるサンプルプログラムを作成しました。GraphGo08 として公開します。
図:GraphGo v0.8
【図61 GraphGo v0.8】

前回に続き、今回も画面のちらつきの対処としてクラスGTableでsetIgnoreRepaint()を呼び出すようにしましたが、Eclipseのアプレットビューア上ではちらつかないものの、ブラウザでは1手毎にちらつきが発生してしまいます。なかなか手ごわいのですが、今後なんとかしていきたいと思います。

今回は石の表示を加えるにあたり、アゲハマも表示できるようにし、着手したときの効果音も鳴らすようにしました。1手ずつ打つところ、効果音のところは、Igoを作った時のコードを持ってきました。

これで、囲碁プログラムを作る下地ができてきました。まず人同士の対局ができるところを目指していきます。

(つづく)

| | コメント (2) | トラックバック (0)

2011/08/02

作って遊ぼうJava(11) 効果音 AUファイルの再生

三目並べを打った時の効果音、Small Basicなら、

Sound.PlayClickAndWait()

で済みますが、Javaの場合、プリセットの音は用意されていないので、音探しから始めなくてはなりません。
コードとしては、GameApplet.javaの中の以下の2行で音を鳴らしています。

auClick = getAudioClip(getCodeBase(), "button6.au");
auClick.play();

ここで、auClick は AudioClip というインタフェースのオブジェクトです。上記の"button6.au"というファイルはSunオーディオ形式のファイルです。Windowsではあまり使われませんが、Javaでは標準です。Windowsのオーディオ形式で簡単なのがwavファイルです。これはWindowsのアクセサリにあるサウンドレコーダーでも作れます。

 コマンドプロンプトで、
 SoundRecorder /FILE ffff.wav /DURATION hhhh:mm:ss
 を実行しwav形式ファイルに録音します。
 ffffはwav形式ファイル名。hhhhは時間、mmは分、ssは秒
 1秒の例:
 SoundRecorder /FILE test.wav /DURATION 0000:00:01
 0秒の例(このときはGUIで開始と終了を指定します):
 SoundRecorder /FILE test.wav /DURATION 0000:00:00

作成したwavファイルを今度はフリーの音声ファイル変換ソフト「WavToAu」でauファイルに変換します。

ただ、wavファイルを作る際、パソコンのオーディオの環境がよくないとノイズが多くなっていい音ができません。そういう場合はフリーの音源を探してみましょう。今回使っている"button6.au"は、Free Sound Effectsというサイトからダウンロードしたwavファイルをさきほどのフリーソフト WavToAu でauファイルに変換したものです。

Javaには他にもmp3などの形式の音源を鳴らす機能もありますが、当面この連載ではauファイルを使っていこうと思います。mp3の扱いについては書籍『15歳からはじめるJavaオンラインゲームプログラミング教室』に記載があります。

(つづく)

| | コメント (0) | トラックバック (0)

2010/03/07

スタレビのライブツアー「太陽のめぐみ」

スターダスト☆レビューのコンサート、見に行きました。地元の小さめの会場だったのですが、とても盛り上がりました。オープニング、その場で作ってくれるご当地ソング、「ニッポンの汗」大合唱、バラード、アカペラ、根本要さんのトーク等々、どれも印象に残り、幸せな気分に浸っています。
ライブツアー「太陽のめぐみ」は5月30日まで続きます。現在、初回限定DVD付きCD発売中。
スターダスト☆レビューの公式サイトはこちらです。

| | コメント (0) | トラックバック (0)