第2回 カードゲームをつくってみよう90Xi専用ゲームiアプリ開発講座(1/3 ページ)

» 2004年10月25日 15時25分 公開
[澤橋辰典・武上将樹,ITmedia]

 開発講座の第2回では、カードゲームを作成する課程をレクチャーしていきたい。“ゲームアプリ作成ならでは”の手法も交えて説明するので、Javaを少し触ったことのある人でも、新鮮味を感じられるだろう。

ゲームの全体像

 本講座で開発するのは、ネットワーク対戦機能を備えたトレーディングカードゲーム(TCG)。900iシリーズならではの大容量・高速通信・カメラ撮影機能を生かしたアプリを作成する。

 今回は基本的な描画とキーイベント処理をアプリで実現し、土台となるゲームアプリを作ってみる。具体的には、「タイトル画面を表示」-「カード画像を表示」-「キーイベントを取得」-「カーソルを動かしてカードを選択する」部分までを作る。

タイトル画面を表示してみよう!

 まずはゲームを作っていくための第一歩として、タイトル画面を表示させてみよう。

 画面に何かを表示させるときには、ゲームアプリであれば、Canvasクラスのpaintメソッドを用いる。以下のたった十数行のプログラムでiアプリが完成する。

 エミュレータを起動し、Cardという名前でプロジェクトを作成。エディタで以下のプログラムを入力し、Card.javaファイルとして保存する。

//----Card.java---------------------------------------------
import com.nttdocomo.ui.*;
public class Card extends IApplication {
  public void start() {
    new C();
  }
}
class C extends Canvas {
  public C() {
    Display.setCurrent(this);
  }
  public void paint(Graphics g) {
    g.drawString("カードゲーム", 50, 120);
  }
}
//----------------------------------------------------------

 これをCardプロジェクトのsrcフォルダに入れ(デフォルトではC:\iDKDoJa3.5\apps\Card\srcの下)、ビルドして起動ボタンを押してみよう。画面に「カードゲーム」と表示されたはずだ。

 詳しく説明すると、メインのクラスであるCardはプロジェクト名と同じでなくてはならない。クラスCardは、IApplicationというクラスを継承しているが、iアプリを作るためにはこのクラスを継承しなければならない。

 iアプリが起動すると、初めに以下のメソッドが呼ばれる。

  public void start() {
    new C();
  }

 ここで、キャンバスを継承したクラスCを作る。

 クラスCが作られると、コンストラクタが実行される。

  public C() {
    Display.setCurrent(this);
  }

 クラスDisplayのsetCurrentメソッドによって、このキャンバスをカレントフレームにする。setCurrentのイメージは、PCでウィンドウにフォーカスを合わせ、最前面に表示させる動作のようなものと考えていい。

 次に、キャンバスがカレントフレームに設定されると、paintメソッドが1回だけ呼ばれる。

  public void paint(Graphics g) {
    g.drawString("カードゲーム", 50, 120);
  }

 このメソッドの中に書いてある処理が画面上に表示される。例えば、drawStringは、第1引数が表示する文字列(String)で、第2引数と第3引数はそれぞれ表示する位置のX、Y座標である。

 ここで、第1回の時にダウンロードしたリファレンスのGraphicsクラスのページを見てみよう。drawString以外にもさまざまなメソッドが掲載されている。

 例えば、setColor(int c)を文字描画の前に行えば、文字に色が付いて表示される。代表的な16色は、Graphicsクラスに定数として定義されているから、以下のようにして描画色を青色にできる。

  g.setColor(g.getColorOfName(g.BLUE));

 ほかにも、矩形(長方形)描画drawRectなど、リファレンスを見ていろいろ試してみよう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年02月09日 更新
  1. 「iPhoneの調子が悪いです」の文言、なぜアイホンのFAQに? 実はAppleと深く関係 (2026年02月08日)
  2. KDDI、楽天モバイルとの「ローミング重複エリア」を順次終了 松田社長が言及 (2026年02月06日)
  3. 総務省有識者会議が「手のひら返し」な我が国への示唆――日本を国際標準から遅れさせたのは自らの愚策のせい (2026年02月08日)
  4. 「東京アプリ」で1.1万円分をゲット、お得な交換先はどこ? dポイント10%増量+楽天ペイ抽選が狙い目か (2026年02月05日)
  5. 楽天モバイル、1000万回線突破も残る「通信品質」の課題 5G SAの早期導入とKDDIローミング再延長が焦点に (2026年02月07日)
  6. 東京アプリ、PayPayがポイント交換先に追加される可能性は? 広報に確認した (2026年02月05日)
  7. 「小型iPhone SEを復活させて」──手放せない理由SNSで話題 どこが“ちょうどいい”と評価されるのか (2025年11月29日)
  8. 【ニトリ】1990円の「スマホに付けるカードケース」 マグネット対応でスタンドとしても使える (2026年02月07日)
  9. Suica、JRE POINTのキャンペーンまとめ【2月6日最新版】 1万〜2万ポイント還元や10倍還元のチャンスあり (2026年02月06日)
  10. iPhoneの日付変更で空き容量を確保する裏技は“厳禁” 実行してしまった場合の対処法は? (2026年01月08日)
最新トピックスPR

過去記事カレンダー

2026年