第3回 簡単なゲーム作成の流れを身に付ける:90Xi専用ゲームiアプリ開発講座(2/2 ページ)
900i専用のトレーディングカードゲームを開発するため、今回はシーン別処理とランダムな値の取得について学んでいく。
乱数を使用するために、java.util.Randomをインポートする
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ランダムオブジェクトを生成する
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
生成したランダムオブジェクトを以下のように使用すると整数値の乱数を取得できる
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このメソッドで返ってくる値はintが表現できるすべての値なので、-2147483648 〜 2147483647(-2^31 〜 2^31-1)の間の値になる(0を含む)。例えば、-100〜100の値を使用したければ、以下のようにすれば、-100〜100の整数値が返ってくる。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
直感的に利用できるように、最小値と最大値を渡すとその間の乱数を返してくれるメソッドranRangeを次のように作成した。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
簡単なゲームを作成しよう
今回はシーン遷移に慣れるために、少ない画面数で単純明快なルールのカードゲームを作成する。そこでゲームのルールは以下のように設定した。
- ゲームの開始では、自分と対戦相手にそれぞれ3枚ずつカードが配られる
- カードは1〜9の値を持っていて、3枚のカードは値の合計が15になるように配られる
- 配られたカードを1枚ずつ、3回出し合って勝敗を競い、勝利数の多いほうが勝ちとなる
ソースコードはここからダウンロードできる。では、実際にソースを見ながらゲームの流れを追ってみよう。
シーンがSCENE_TITLE時のメイン処理では、決定ボタンが押されると、カードをセットして、シーンをSCENE_GAMEに移している。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
自作のメソッド、private static int[] cardSet(int max) は、引数に11〜19を指定すると、合計値が引数の値になるように、ランダムな値が格納された長さが3の整数型配列を返してくれる。ゲーム中のプレイヤーと相手の所持カードの値はstockP,stockEというint型配列に保持している。
バトルが始まると、左右キーでカーソルを動かしてカードを選び、決定キーが押されると、自分のカードと相手のカードの数値を比較し、数値の高いほうがそのターンの勝者となる。勝敗の結果は変数statusに保持される。statusの値が示す情報は以下の通り。
0:未勝負, 1:勝ち, 2:負け, 3:引き分け
バトル中の画面の描画は、プレイヤーのカードを右下に、対戦相手のカードは左上に配置し、上から黒く塗りつぶして不可視状態にしている。カードの横にはそのカードの勝敗結果が表示される。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
3回勝負が済むと、勝敗結果が表示され、ソフトキー2(右上のオプションキー)を押すと、バトル中に使用した変数を初期化してタイトルへと戻る。
次回はカードの生成にチャレンジ
今回はゲーム作成の一連の流れを理解してもらうために、画面遷移を書き、シーン別にイベント処理と描画処理を行う簡単なカードゲームを作った。しかし、これだけではカードの収集、交換ができず、トレーディングカードゲームと呼ぶにはまだ足りない。
次回は900iに標準で搭載されているカメラを用いて、撮影した画像を解析し、カードを生成するというカッコイイ処理を解説する。また、生成されたカードがどんどん増えてくると、ゲームのデータを保存する必要が生じるため、「スクラッチパッド」と呼ばれる記憶領域にデータを保管することになる。この方法も併せて解説する予定だ。
|
関連記事
- 連載バックナンバー
- 第1回 90xiの時代に何を作るか
ドコモのFOMA 900iシリーズが普及し始め、パケット定額制サービス「パケ・ホーダイ」も人気を博している。こうした新たな時代のiアプリ開発とはどんなものなのだろうか。 - 第2回 カードゲームをつくってみよう
900i専用の、トレーディングカードゲームを開発してみる。まずはカーソルを動かしてカードを選択するところまで作ってみよう。
Copyright © ITmedia, Inc. All Rights Reserved.