もぐら叩きを作る〜1お約束の,まとまったiアプリということで定番の「モグラ叩きゲーム」を企画したのだが,完成したものを単にお見せするだけでは,あまりにもつまらない。そこでiアプリをどう設計していくかを交えて「もぐら叩き」を説明していきたい。
キャラクタをクラスにする知らない人はいないと思うが,もぐら叩きは出現する「モグラ」をユーザーが叩くと得点になる,いかす(?)ゲームだ。実に単純なので,ベタベタにコードを書いていっても簡単に作ることができる。 とはいえ,それじゃ面白くないし,iアプリはJavaを使うのである。Javaはオブジェクト指向の言語だから,ゲームもオブジェクト指向的に作ってみたい。 オブジェクト指向というのを難しく考えると,ますます難しくなって面倒になり,結局のところ未完成になったりするので要注意だが,キャラクター(この場合はモグラだ)が自立的に動いてくれるとプログラム的には楽ができそうだ。 「モグラクラス」というのを作り,モグラクラスを生成したらば勝手にモグラが出たり,引っ込んだりしてくれ,ついでに叩かれると音を出すとか,そんな具合に動いてくれるようなクラスがあれば,楽しそうだし,楽そうである。 それだけじゃなく,作った「モグラクラス」をほかのゲームにも応用できるだろう。そこがオブジェクト指向のいいところだ。 ということで,まずモグラクラスを考えてみる。ここでいう「出たり引っ込んだり」は画面に表示されたり,されなかったりという意味だ。もちろん,モグラは最終的には絵で表示されることになる。となると,次のような具合にモグラクラスができればベストだろう。 ----------------- 上記のように,モグラ自身をiアプリのユーザーインタフェースコンポーネントとして実装するのだ。そうしておけば,あとはパネルなりフレームなりに,モグラをadd()してやるだけで,モグラが勝手に動いてくれる。素晴らしい! だが本当にできるだろうか? モグラは絵だから,絵を表示するコンポーネントImageLabelを継承すると楽そうだ。ところが, class MoguraBody extends ImageLabel { ... } などとするとエラーが出る。 その理由は,ImageLabelが「ファイナルクラス」だから。ファイナルクラスとは早い話,作成者が「継承してくれるな」という,お断りをつけているクラスのことだ。ファイナルクラスとして定義されている以上,上の手法はつかえない。では,どうするのか? 次善のモグラ残念だが次善の策を取ることにする。上のようなスマートな手法の代わりに,次のように実装するのだ。 class MoguraBody implements TimerListener { 上記のように,コンストラクタにモグラを表示するためのパネルを渡してもらい,モグラクラス側でImageLabelを作ってモグラを表示する。あんまり格好のいい手法ではないが,ImageLabelがファイナルクラスなので仕方がない。 ということで,モグラクラスバージョン1をリスト1に示しておこう。今回はクラスの作成ということで実際に動くものは次回に紹介するので,今回はモグラクラスの機能を簡単に説明しておく。 モグラの出現時間と頻度は,setBusy()とsetInterval()という2つのメソッドで設定する。setBusy()で設定された数値に1回の割り合いで,乱数を元に出現するかどうかを決め,またsetInterlval()でタイマー頻度を変えていることがリストから分かると思う。モグラクラスの働きを,リストを追いかけて確かめておいてほしい。 次回は,作成したモグラクラスを強化してサウンドなどをつけるとともに,ゲームとしての体裁を整える作業を行う。そして最終的には,もぐら叩きをネットゲーム化することにしているので期待して欲しい。 [米田聡,ITmedia] 関連記事 連載バックナンバー Copyright © ITmedia, Inc. All Rights Reserved. モバイルショップ
最新スペック搭載ゲームパソコン
最新CPU搭載パソコンはドスパラで!!
FEED BACK |