第3回 簡単なゲーム作成の流れを身に付ける90Xi専用ゲームiアプリ開発講座(1/2 ページ)

» 2004年11月01日 22時55分 公開
[澤橋辰典・武上将樹,ITmedia]

  • 第8回 90xiアプリのこれから
  • 第7回 ネットワークiアプリのためのサーバサイド活用(2)
  • 第6回 ネットワークiアプリのためのサーバサイド活用(1)
  • 第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理
  • 第4回 カメラ機能を使ってカードを作ろう
  • 第3回 簡単なゲーム作成の流れを身に付ける
  • 第2回 カードゲームをつくってみよう
  • 第1回 90xiの時代に何を作るか
  •  900i専用のトレーディングカードを開発するにあたり、前回は画面への描画と、キーイベントの処理までのプログラムを作成した(10月25日の記事参照)。しかし、これだけではまだゲームとして遊ぶことはできない。そこで今回は、遊ぶのに必須となるシーン別の処理と、ランダムな値の取得について解説していく。

    画面遷移を設計しよう

     ゲームをゼロから作る際には、頭の中でイメージしたものを、実際に目に見える形に置き換えることが重要になる。イメージをいきなりプログラムに書こうとしても、抽象的すぎて作業効率が上がらないからだ。そこでまず、「画面遷移」をしっかりと組んでおこう。

     画面遷移とは大ざっぱにいうと、「ゲームを起動するとまずはロゴが表示され、次にメニュー画面が出て、そこで何らかの選択が行われるとゲームのプレイ画面が表示される」といった具合に、どのように画面が移り変わっていくかという流れを示す構成図のようなものだ。

     ゲームやツールにはさまざまな画面が存在する。RPGを例にとれば、タイトル画面・メニュー画面・フィールド画面・バトル画面などに分かれ、それぞれの画面で行う処理も異なる。前もって面遷移がしっかりと組まれていれば、それぞれのシーン毎に必要になる処理が見えてくるので、スムーズにコーディングを進められる。

     さて、今回のゲームで定義したシーンは以下のようになっている。

    // 初期化中のシーン
    static final int SCENE_INIT  = -1;
    // タイトルのシーン
    static final int SCENE_TITLE = 0;
    // ゲーム中のシーン
    static final int SCENE_GAME  = 1;

     SCENE_INITでは、起動してから画像を読み込み、ゲームが使用できる状態になるまで「初期化中」のメッセージを表示する。初期化が終わると、次にタイトル画面を表示する。続いてバトル画面に移行し、ここでカードが表示されバトルが始まる。勝負がつくとリザルト画面を表示してタイトルに戻る。

     考えた画面遷移を図にすると以下のようになる。

    シーン別処理を行おう

     実際には以下のような形でそれぞれのシーンを処理していく。

     switch(scene) {
      // タイトル画面の処理
      case SCENE_TITLE:
       switch(event) {
        case Display.KEY_SELECT:
         // 決定キーを押したらフィールド画面へ
         scene = SCENE_FIELD;
        break;
       }
      break;
      
      case SCENE_FIELD:
       …フィールドの処理…
      break;
     }
     

     main処理メソッドや、paintメソッドに上記の処理を記述することによってゲームが進んでいく。上記の例では、タイトル画面で決定キーを押したらフィールド画面に遷移する様子を示している。

     ここで気をつけなければならないのが、定数の設定だ。例えば、Displayクラスの定数フィールドでは、決定キーは、KEY_SELECTという名前の整数型で、値は0x16(16進数。10進数では20)であることが分かる。つまり、case 0x16: と記述しても決定キーのeventを拾えてしまうのだが、タイピング数やコードサイズが減るからといって、フィールドを数字で書いてしまうと、後でコードを読む時に何の値か分からなくなってしまう。フィールドの記述には、必ず定数として宣言されている値を使おう。

    乱数の取得を行おう

     ゲームには乱数を使用する場面が多い。例えば、パズルゲームで次に現れるピースや、モグラ叩きゲームにおけるモグラが地上に現れる穴、こういったものの決定には乱数が使われている。今回のゲームでも、配られるカードのシャッフルに乱数を使用する。

           1|2 次のページへ

    Copyright © ITmedia, Inc. All Rights Reserved.

    アクセストップ10

    2026年07月21日 更新
    1. ダイソーで330円の「人感・明暗センサーLEDバーライト(Type-C)」が意外と便利 1人暮らしの帰宅時や非常灯に便利  (2026年07月18日)
    2. なぜ「060」携帯番号は18カ月あっても延期になったのか? それでも「慌てる必要はない」現状 (2026年07月20日)
    3. 専用充電器はもう不要? 中韓スマホから国内勢まで巻き込む「USB PPS」急速充電の新常識 (2026年07月14日)
    4. 「Pixel 11」は何が変わる? メモリ減少で100ドル前後の値上げも? 出そろったうわさを整理する (2026年07月19日)
    5. 携帯番号に「060」が採用されるワケ 「電話番号とは何か」を歴史とともに振り返る (2024年10月09日)
    6. JR東日本「分かりにくい」新幹線券売機を改善へ なぜ、スマホではなく「駅での最短1分購入」を実現? (2026年07月04日)
    7. ショップとAIで差別化を図る「ドコモの銀行」――住信SBIネット銀行ユーザーからは戸惑いも (2026年07月19日)
    8. ミドルハイレンジモデルにも水冷搭載 nubiaから「Neo 5 GT Special Edition」登場 (2026年07月19日)
    9. “特典終了”が続く「d払い」「dポイント」のお得さはどう変わるのか これからは「dカード」の利用が得策? (2026年07月17日)
    10. 最大13日間バッテリー持続、丸型デザインの「CMF Watch 3 Pro」がAmazonで販売中 1万3800円 (2026年07月18日)
    最新トピックスPR

    過去記事カレンダー