第5回.UMLで勉強しなおし。
ほるえ:
う〜ん。まあ、こんな感じかな〜
マスター、できました。
Masa: おっ出来た?どれどれ、だいぶクラス図、すっはきりしたね。
ほるえ: そうですね。こうやって見直すと、まだちょっと手を入れたい部分がありますが・・
Masa: 例えば?
ほるえ:
「Computer」クラスで敵側のオブジェクトを作ったんですが、結局「接触判定」をするために、「GameMaster」クラスへ読み込まなくてはいけなくなってたり・・・。「GameMaster」クラスで読み込んだイメージを使うために、オブザーバとして「GameMaster」クラスへの関連がついちゃったりとか・・・
て、マスターどうしたんですか?
Masa:
いや、熱でもあるんじゃないかとおもって・・・

「インベーダー」結局こんなクラス図にしてみました。


もとのコードは、こちら↑



結局こんな風に変わりました。

@ キャラクタ関係の動きを【抽象クラス】「Character」で作りました。ちょっとはJavaッぽくなってますか?
A 自分のミサイルと相手のミサイルを、「Missile」クラスから、インスタンス化している。やればあたりまえだけど、初心者にはインスタンス化ってなかなか理解しづらい。(^-^;)
B イメージ関係をファイル渡しにしています。

ほるえ: マスターのコードもはじめからこれぐらい書けてると良かったのに・・・
Masa:
ま、この辺はまだJava勉強したてで、オブジェクトとかクラスとか全然意識してなかったしな。
(ま、そのおかげで、ネタも出来たので良かったけど・・・)
ほるえ:
いま、何か良からぬことを考えましたね?
Masa: (ぎくっ)そ、そんなこと無いぞっ。ただ、この感じだと確かにまだまだ改良の余地ありだなっと。
ほるえ:
ええっ。まだやるんですか〜
Masa: そんな、びびんなくていいって。だいぶいい線いってるから。あとは、コードの再利用をについてなんだ。
ほるえ: むーぅ、出ましたね分別ごみっ。
Masa:
だから、違うって。
まあ、また今度やろう。それよかせっかくだから、アプレットとコードをアップしておこう。
ほるえ:
やたっ。

このクラス図のまずいところ


イメージを「GameMaster」クラスで用意して、このクラスをオブザーバにしているのでイメージファイルを使っているクラス全部から【関連】が出てしまっている。この状態だと「GameMaster」との関連が強すぎでクラスごとの独立性を欠いてしまっている。

解決案)
イメージ渡しの部分を【インターフェース】にして、インターフェースに対し【関連】をつける。これにより、各クラスの独立性が保てる。


で、結果をアップしてみました。

ゲーム的にはオリジナルとあまり変えていませんがちょっとだけ改良しています。
・インベーダがトーチカに触るとトーチカ消えます。
・インベーダと自機の当たり判定をしています。
・インベーダに占領されます。(実は、前回のやつは忘れていました)



フォルダごと、ダウンロードできます。
もちろん、ソースコード入り。

「がんばりました。」


Masa: で、一通りやってみたけど、感想は?
ほるえ:
うーん。始めは、【シーケンス図】とか【クラス図】とかめんどくさいと思ってたんだけど、実際やってみるとこれがあると楽チン。っていうか、やり方をとりあえず決めてからコーディングするから、「ほるえ」みたいな初心者にぴったりと思いました。
Masa: (う〜ん。なんかキャラ変わってねーか。)まあ、そうだな。
じゃあ、次ぎいってみるか?
ほるえ:
え〜っ。まだやるんですか〜
Masa: おうっ。とりあえず、目指せゲーム用デザインパターン入門だっ
ほるえ:
しくしく。
(このまま、"おたく"になっちゃうのかな〜)


Copyright (C) 錬金術師Masa
新規:2006年01月11日