アイコン イチから始める,
iモードJava
プログラミング
 [第16回]

もぐら叩きを作る〜1

お約束の,まとまったiアプリということで定番の「モグラ叩きゲーム」を企画したのだが,完成したものを単にお見せするだけでは,あまりにもつまらない。そこでiアプリをどう設計していくかを交えて「もぐら叩き」を説明していきたい。

【国内記事】 2001年5月28日更新

キャラクタをクラスにする

 知らない人はいないと思うが,もぐら叩きは出現する「モグラ」をユーザーが叩くと得点になる,いかす(?)ゲームだ。実に単純なので,ベタベタにコードを書いていっても簡単に作ることができる。

 とはいえ,それじゃ面白くないし,iアプリはJavaを使うのである。Javaはオブジェクト指向の言語だから,ゲームもオブジェクト指向的に作ってみたい。

 オブジェクト指向というのを難しく考えると,ますます難しくなって面倒になり,結局のところ未完成になったりするので要注意だが,キャラクター(この場合はモグラだ)が自立的に動いてくれるとプログラム的には楽ができそうだ。

 「モグラクラス」というのを作り,モグラクラスを生成したらば勝手にモグラが出たり,引っ込んだりしてくれ,ついでに叩かれると音を出すとか,そんな具合に動いてくれるようなクラスがあれば,楽しそうだし,楽そうである。

 それだけじゃなく,作った「モグラクラス」をほかのゲームにも応用できるだろう。そこがオブジェクト指向のいいところだ。

 ということで,まずモグラクラスを考えてみる。ここでいう「出たり引っ込んだり」は画面に表示されたり,されなかったりという意味だ。もちろん,モグラは最終的には絵で表示されることになる。となると,次のような具合にモグラクラスができればベストだろう。

-----------------
class MoguraBody extends Component {
  ...
  出たり引っ込んだり
}

class MoguraPanel extends Panel {

  MoguraPanel() {
    MoguraBody m1 = MoguraBody();
    ...
    this.add(m1);
    ...
    あとはモグラが勝手に出たり
    引っ込んだり
  }
}
-----------------

 上記のように,モグラ自身をiアプリのユーザーインタフェースコンポーネントとして実装するのだ。そうしておけば,あとはパネルなりフレームなりに,モグラをadd()してやるだけで,モグラが勝手に動いてくれる。素晴らしい!

 だが本当にできるだろうか? モグラは絵だから,絵を表示するコンポーネントImageLabelを継承すると楽そうだ。ところが,

class MoguraBody extends ImageLabel { ... }

などとするとエラーが出る。

 その理由は,ImageLabelが「ファイナルクラス」だから。ファイナルクラスとは早い話,作成者が「継承してくれるな」という,お断りをつけているクラスのことだ。ファイナルクラスとして定義されている以上,上の手法はつかえない。では,どうするのか?

次善のモグラ

 残念だが次善の策を取ることにする。上のようなスマートな手法の代わりに,次のように実装するのだ。

class MoguraBody implements TimerListener {
  ...

  MoguraBody(Panel pnl,
             Image img,
             int x, int y) {
     moguraimage = new ImageLabel(img);
  }
 ...
}

 上記のように,コンストラクタにモグラを表示するためのパネルを渡してもらい,モグラクラス側でImageLabelを作ってモグラを表示する。あんまり格好のいい手法ではないが,ImageLabelがファイナルクラスなので仕方がない。

 ということで,モグラクラスバージョン1をリスト1に示しておこう。今回はクラスの作成ということで実際に動くものは次回に紹介するので,今回はモグラクラスの機能を簡単に説明しておく。

 モグラの出現時間と頻度は,setBusy()とsetInterval()という2つのメソッドで設定する。setBusy()で設定された数値に1回の割り合いで,乱数を元に出現するかどうかを決め,またsetInterlval()でタイマー頻度を変えていることがリストから分かると思う。モグラクラスの働きを,リストを追いかけて確かめておいてほしい。

 次回は,作成したモグラクラスを強化してサウンドなどをつけるとともに,ゲームとしての体裁を整える作業を行う。そして最終的には,もぐら叩きをネットゲーム化することにしているので期待して欲しい。

[米田聡,ITmedia]

関連記事
▼ 非公式の携帯Javaに課金──ニフティが課金システムを提供
▼ iアプリ開発であなたもアプリ成金になれる?
▼ SO503iの“iアプリバグ”の正体は?
▼ 携帯向けJava,3社の違いは?
▼ 一般向け「iアプリ」市場は立ち上がるのか?
▼ iモード対応Javaを作るのに必要なものは?──NTTドコモ,仕様をついに公開


連載バックナンバー

▼ 付録 iモードJava開発関連リンク集

▼ 第1回 プログラム作成への準備

▼ 第2回 iアプリ製作の流れ

▼ 第3回 ファーストiアプリケーション

▼ 第4回 i-JADEを使おう

▼ 第5回 preverifyの環境作り

▼ 第6回 iアプリでミニゲーム〜グラフィックの取り扱い

▼ 第7回 読者からの質問コーナー

▼ 第8回 キーボードに合わせてグラフィックを動かす

▼ 第9回 クラスって何だろう?

▼ 番外編 ドコモ,公式iアプリ作成ツールを公開

▼ 第10回 NTTドコモの開発ツールを使ってみよう

▼ 第11回 サウンドを使ってみる

▼ 第12回 読者からの質問コーナー〜2

▼ 第13回 スクラッチパッドへの書き込み

▼ 第14回 ネットからデータをダウンロードする

▼ 第15回 アニメーションGIFを使ってみる

▼ 番外編2 iアプリのセキュリティは破られていない

▼ 第16回 もぐら叩きを作る〜1

▼ 第17回 モグラクラスの動作検証

▼ 第18回 読者からの質問コーナー〜3

▼ 第19回 サウンドを鳴らす

▼ 第20回 iアプリの割り込み〜再開処理を実装する

▼ 第21回 サーバと通信を行ってみる

▼ 第22回 iアプリプログラマのためのezplus入門

▼ 第23回 J-フォンのJava仕様

▼ 第24回 iアプリの達人になるには?

Copyright © ITmedia, Inc. All Rights Reserved.



モバイルショップ

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!