ステージデータの一覧表示(その2)

昨日の続き。

早速、ステージデータを一覧表示する方法を検討した結果、JListを使えば自分でも比較的簡単に作れそうだということがわかった。リストにステージデータのサムネイル画像を表示するには、ListCellRendererというインターフェースを実装すれば可能らしい。

ステージデータのサムネイル画像は、Iconクラスを継承したクラスのコンストラクタで生成する形になる。

作成に必要な各クラスの大体の役割が把握出来たので、ネットで不明な点を情報収集しながらコーディング。そうして、完成したのが下の画面ようなアプレット。今回の作業は、このサムネイルを生成する部分が一番手間がかかった気がする。JListとIconの良い勉強になった。

2007年06月30日(土) 22時15分  

ステージデータの一覧表示

パズルゲームのステージプレイヤーとステージエディタの作成がひと段落したので、パズルゲームのステージを一覧表示出来るビューワー(ビューアー)の作成にチャレンジしてみようと思い立つ。ステージデータが10個を超えていたので、それらをステージエディタで1個ずつ開いて内容を確認するのが面倒になってきたという次第。ステージデータを一覧表示するだけのものなので、アプレットとして作成することにする。

2007年06月29日(金) 22時33分  

パズルゲームの効果音の作成

ゲームの落下音等の効果音は、Web上で無料で配布されている素材を使用させていただいていたのだが、さすがにゲームスタート時の曲はWeb上を探しても絶対に手に入らないので、思い切って自作してみようと思った次第。じゃあ、どうせならばということで、勢いで効果音も作ることにした。我ながら無謀なチャレンジなり。

けれども正直なところ、無料で使用させていただいていた落下音等の効果音のフリー素材は音質が良い(=ファイルサイズが大きい)ので、ゲーム内で再生する時に、例えば「ゴン、ゴン」というように同じ効果音が連続再生されなければならない場面で2回目の効果音の再生が間に合わず「ゴン、(無音)」としか再生されないという問題が頻繁に起きていた。

効果音を自作することで、2回目の効果音の再生が間に合わないという場面はかなり減ったが、「ゴンゴン、ゴン」という、同じ効果音が3回連続再生されなければならない場面はクリア出来ていない(苦笑) 

効果音のデータの持ち方(再生のさせ方)次第なのかな。それとも、WAVファイルを諦めて、MIDI関連のAPIを勉強してMIDIファイルを再生するか……。

さて、ゲームスタート時の曲と効果音の作成には、テキスト音楽「サクラ」というフリーウェアを、MIDI→WAVへの変換には、同じくフリーウェアのMIDI Encoderを使用させていただきました。

2007年06月27日(水) 23時54分  

ステージプレイヤー(PlayPanel)の完成

アプレットとステージプレイヤーでステージを連続して遊べるように、ゲームの中心となる処理を行っているPlayPanelクラスを拡張するついでに、(リセット、中断/再開、ゲーム終了等)を追加実装する。一通り実装が完了して動作確認が出来たところで、ステージプレイヤーも一応の完成。パチパチ

2007年06月24日(日) 23時57分  

eclipseはゴミ箱を使わない?

eclipseの新規プロジェクトでパズルゲームのモジュールを参照したテストプログラムを書いた後、そのテストプログラムを削除したら参照先のパズルゲームのモジュールまで削除されてしまった。

しかもeclipseはファイルはゴミ箱を経由せずに直接削除されてしまう(=削除前の状態に戻せない)らしい。これは覚えておいたほうがよいかも。他のIDEはどうなのだろうか。

とりあえずDataRecoveryというソフトを使用して、無事HDDからパズルゲーム関係のモジュールを無事に救出。
ちなみにDataRecoveryは、HDDの使用環境によっては必ず救出できるわけではないので注意。

2007年06月22日(金) 22時09分  

やさしいオブジェクト指向、読了

先日、購入した「やさしいオブジェクト指向」を読了。

思えば、オブジェクト指向の書籍を途中で投げ出したりせず、つまづくことなく最後まで読み終えることが出来た書籍は、本書が初めてのような気がする。単純に、本書で扱っている範囲が広くないだけなのかもしれないけれど、途中で投げ出したりせず、つまづくことなく最後まで読み終えられるかどうかというのは、本書のように入門者を対象に書いている本にとっては特に大切なことだと思う。本書は、それを上手にクリアしている本だと思う。

また、普通の入門書ではあまり触れられていないソフトウェアの分析・設計・実装についてページを割いている点も、他の書籍と一線を画していると思う。例えば、クラスを抽出する過程では、

  • シンプルすぎる名詞に注意する → クラスのフィールドとして検討
  • 具体的すぎる名詞に注意する → クラスのオブジェクトとして検討
  • 抽象的すぎる名詞に注意する → 抽象クラスやインターフェースとして検討

をポイントとして挙げていたりと、ソフトウェアの分析・設計・実装を意識した構成になっている。

結城浩氏の「改訂第2版 Java言語プログラミングレッスン (上)」、「改訂第2版 Java言語プログラミングレッスン (下)」等の入門書を読んで、言語仕様は理解出来たけれど、オブジェクト指向がいまいち理解出来なかったという方には、お勧めの1冊である。

4797337443.09.MZZZZZZZ.jpg やさしいオブジェクト指向 やさしいシリーズ

2007年06月20日(水) 23時23分  

ステージデータファイルのロード処理の見直し完了

ローカル環境では正常にステージデータをロード出来ていたアプレットが、Web上にアップロードしたらステージデータをロード出来ないという、不具合が発生してしまった。

ネットで情報を収集しつつあれこれ試してみたら、ステージデータファイル名をFileオブジェクトで扱っていたのが原因だということがわかった。ステージデータファイル名をURLオブジェクトで扱うように修正することで、不具合を回避。やれやれ。

2007年06月16日(土) 22時21分  

ステージプレイヤーの作成(その2)

13日に作成したファイルチューザーを、ステージプレイヤーにも流用。次いで、ステージプレイヤーのメニューバーとメニューアイテムにも各イベント処理を実装。といっても、現段階ではロードと終了のイベントしか実装出来ない。

とりあえずJavaアプリケーション(jar)形式でステージプレイヤーをエクスポートして起動。13日にステージエディタで作成したステージデータファイルをロードして無事にプレイ出来ることを確認して、本日の作業は終了。

2007年06月15日(金) 22時27分  

ステージエディタの完成

10日の続き。

ステージプレイヤーとステージエディタの両方で、ステージデータファイルのロード時とセーブ時に使用するファイルチューザーを作成。

また、FieldPanelクラスのloadメソッドとsaveメソッドを、ステージデータファイルを読み書き出来るように処理を書き換えて(差し替えて)おく。最後にロードやセーブを指示するメニューバーとメニューアイテムに各イベント処理を実装。編集画面も微妙にレイアウトを変更。これでようやくステージデータのロードとセーブが出来るようになった。

早速、Javaアプリケーション(jar)形式でステージエディタをエクスポートして起動。試しに適当にステージを編集して、セーブとロードのテストを行ってみる。無事にセーブとロード出来ることを確認。ただ、この段階でファイル名に拡張子が付かないことが判明。拡張子が付加されていなければ、自動的に拡張子を付けるように処理を追加する。

これにてステージエディタは一応完成かな。

2007年06月13日(水) 23時56分  

ステージエディタの作成

Javaアプリケーション版ステージプレイヤーの作成を開始したのに合わせて、ステージエディタも作成開始。ステージデータをセーブするので、こちらもJavaアプリケーション。

今日の作業ではステージデータのロードとセーブを実装出来なかったが、編集画面に描いたステージデータからjavaのソースコードを出力する機能は付加しておいたので、ソースコードにステージデータを直接作成していた今までよりは格段に楽になった。

2007年06月10日(日) 23時51分