第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年04月13日 更新
    1. もうiPhoneユーザーの「エアドロで送るね」に苦しまない? Google Japanが「共有の扉を開くことが叶わず」などと“おわび”したワケ (2026年04月11日)
    2. 紛失した「AirPods Pro 3」片耳をAppleで購入したハナシ そしてまさかの結末に (2026年04月11日)
    3. 「Google Pixel 10a」レビュー:aシリーズらしい取捨選択のうまさが光る Pixel 9aとの差分をどう考えるかがカギ (2026年04月13日)
    4. 廉価モデル「Pixel 10a」「iPhone 17e」を比較 価格とスペックに“決定的な差”あり (2026年04月10日)
    5. ソフトバンクが「今回もやる」とGalaxy S26を月額1円で販売――販売方法を早急に見直さないと撤退を迫られるメーカーも (2026年03月08日)
    6. フェラーリデザインをスマホに! Infinixから美しすぎるスマホ登場 (2026年04月12日)
    7. ソフトバンク値上げの背景に「通信品質維持の限界点」 Y!mobileは収益重視で改定、LINEMOは据え置き (2026年04月10日)
    8. あなたの街の「スマホ決済」キャンペーンまとめ【2026年4月版】〜PayPay、d払い、au PAY、楽天ペイ (2026年04月10日)
    9. 「ダイソン初のハンディファン」発表 “同社のエンジニアリング”を凝縮 USB Type-Cに対応 (2026年04月11日)
    10. コンセントプラグに「見守り機能」を持たせるという発想はなかったが合理的 (2026年04月11日)
    最新トピックスPR

    過去記事カレンダー

    2026年