検索
連載

第4回 カメラ機能を使ってカードを作ろう90Xi専用ゲームiアプリ開発講座(1/2 ページ)

900i専用のトレーディングカードゲームを開発するため、今回は900iのカメラ機能と画像処理機能を利用してゲームの主役であるカードを生成する方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

  • 第8回 90xiアプリのこれから
  • 第7回 ネットワークiアプリのためのサーバサイド活用(2)
  • 第6回 ネットワークiアプリのためのサーバサイド活用(1)
  • 第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理
  • 第4回 カメラ機能を使ってカードを作ろう
  • 第3回 簡単なゲーム作成の流れを身に付ける
  • 第2回 カードゲームをつくってみよう
  • 第1回 90xiの時代に何を作るか
  •  前回は画面遷移を設計して、それをベースにカードゲームを作るサイクルを紹介した(11月1日の記事参照)

    今回からは、900iシリーズならではの機能を利用して、アプリに組み入れてみよう。まずは、カメラの使い方と、その応用で撮影画像を解析してカードの画像とパラメーターを生成する処理を解説する。

    カメラオブジェクトの使い方を知ろう

     Cameraクラスは、カメラ機能を呼び出して、静止画や動画を撮影する機能を持つオブジェクトを定義できる。CameraクラスにあるgetCamera(int id)でカメラIDを指定することで、カメラオブジェクトを用意することができる。カメラIDはゼロから始まるが、900iシリーズには標準で一つ以上のカメラが搭載されているので、引数にゼロを指定すると、デフォルトのカメラをスタンバイする。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

     前回のコードにSCENE_DECKという、カード閲覧モードとカード生成モードへのメニューが表示されるシーンを追加した。デッキ:DECKとは、カードゲームで使用するカードが組まれた束のことだ。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

     カード閲覧シーン(SCENE_DECK_VIEW)では取り込んで作成したカードの表示を、カード生成シーン(SCENE_DECK_CAMERA)では、画像の撮影と解析を行う。

     撮影画像をアプリに取り込むために、取り込む画像サイズや、カメラ操作モードの指定などが必要となる。

     Camera.setImageSize(int w, int h)で、撮影画像の幅と高さを指定する。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

     Camera.takePicture()を呼び出すと、カメラが静止画撮影モードで立ち上がり、ユーザの操作を待つ状態になる。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

     撮影すると、指定したカメラオブジェクトに撮影画像が格納される。撮影モードを指定せずに撮影すると、1枚だけ画像を保持する。ほかにも連射モード、ムービー撮影モードなどが用意される。撮影された画像はCamera.getImage(int index)で指定したindexの画像のMediaImageを得ることができる。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

     しかし、もしユーザがカメラ起動後にクリアキーなどで撮影をキャンセルしてしまった場合は、画像が保持されないため、この状態でgetImageを実行すると例外ArrayIndexOutOfBoundsExceptionが発生する。

     そのため、Camera.getNumberOfImages()を実行して、保持画像数がゼロの場合には処理を中止するようにしておく。

    *** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

           | 次のページへ

    Copyright © ITmedia, Inc. All Rights Reserved.

    ページトップに戻る