スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ゲーム]Androidでゲームを作ろう!サンプルコード「Snake」に学ぶ その2

はじめに


前回の記事では、Android SDKに付属している「Snake」というアプリのソースコードの生成方法&実行までを説明しました。

今回はSnakeアプリのレイアウト外観を解説していきたいと思います。

今日の目標は?


Snakeアプリのレイアウト構造が把握できるところまでいきたいと思います。

シンプルなゲームですので、分かり易いのではないかと思います。


Snakeアプリのレイアウト


以下にSnakeアプリのレイアウト構造を示します。

Snake App Layout XML

Snake App Layout

レイアウトとしてはシンプルで、全体を[FrameLayout]で覆って、そこにSnakeアプリオリジナルの[SnakeView]、得点などを表示するために使用する[TextView](RelativeLayoutで位置合わせ)という構成です。

ゲームを実行した感じから言うと、
 ・SnakeView ・・・ ゲーム画面本体 蛇を動かしたり。
 ・TextView ・・・ 得点などテキスト情報を表示する。
という二段構成になっていると想定できます。

TextViewについては単にテキストを表示するだけですので、特にゲームアプリだから特別な処理を行うということはないと思います。なので、ゲームの神髄である「SnakeView」について見ていきたいと思います。

SnakeViewの構成


SnakeViewの構成について調べる前に、まずはSnakeアプリのソースコード構成について説明します。

Snake App Source Code

Snakeアプリは、上記に示す3つのファイルから構成されています。

「Snake.java」はアプリ実行時の挙動を定義する部分で、これはゲームアプリに限らず他のアプリでも実装しないといけない部分です(onCreateメソッドの実装など)。

「SnakeView.java」は、先ほどのSnakeViewを実装しているコードです。こちらでゲームの本質となる描画処理やあたり判定などを行っているものと類推できます。

「TileView.java」については、この時点では役割が不明です。おそらくゲームに関係する処理について切り出したクラスが入っていると思いますが、これについてはSnakeView.javaを調べていくときにおいおい分かっていくものと思いますので、今回は無視します。

ということで、ファイル構成から「SnakeView.java」を見ていくと、SnakeViewのビューでどのようにゲームが実装されていくかが分かると思います。

SnakeView.javaの中身について軽く


public class SnakeView extends TileView {

private static final String TAG = "SnakeView";

/**
* Current mode of application: READY to run, RUNNING, or you have already
* lost. static final ints are used instead of an enum for performance
* reasons.
*/

private int mMode = READY;
public static final int PAUSE = 0;
public static final int READY = 1;
public static final int RUNNING = 2;
public static final int LOSE = 3;


今回はSnakeアプリのレイアウト外観を調査するだけですので、SnakeView.javaの詳細なところまでは踏み込みませんが、軽くどういうクラスになっているのかだけ見てみます。

上記ソースコードを見ると、SnakeViewクラスはTileViewクラスを継承しています。TileViewクラスとは、先ほど何の役目を行っているか不明だった「TileView.java」で定義されたクラスです。

さらにTileViewクラスの定義部を見ると、

public class TileView extends View {

/**
* Parameters controlling the size of the tiles and their range within view.
* Width/Height are in pixels, and Drawables will be scaled to fit to these
* dimensions. X/Y Tile Counts are the number of tiles that will be drawn.
*/


となっていますので、結局スーパークラスは「View」クラスとなり、Viewクラスを用いてゲーム画面を描画していることが分かりました。

SnakeViewクラス図簡易版


一般的にゲームアプリ作成には「SurfaceView」が使用されるものだと思っていましたが、SnakeアプリはViewクラスで実装しているようです。シンプルなゲームですし、フレームレートもそこまで必要ないので、簡単なViewクラスで実装したのかもしれません。

いずれにしてもSnakeアプリの実装方法については、SurfaceViewを使用したゲーム作成にも応用が利く部分が多いと思いますので、勉強して損は無いと思います。

おわりに


今回はSnakeアプリのレイアウト構成について外観とほんの少しコードの中身も調査しました。

レイアウトについては非常にシンプルにできており、コードについてもViewクラスを使用して分かり易い構成になっていそうです。Androidアプリのゲーム開発の勉強にはとてもためになるサンプルではないでしょうか。

次回からはSnakeView.javaの中身に迫っていきたいと思います。


テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです
プロフィール

sepiablue

Author:sepiablue
組込みソフトウェアエンジニアやってます。普段はC言語使い。
趣味はプログラミング、京都旅行で神社巡り。
AndroidアプリをMacで開発中。

最新記事
スポンサードリンク
スポンサードリンク
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。