p200からの「ベルトコンベアのゲーム」(Atlas6.pde)について、Gridのプログラムを見てみます。今回は、かなり大きな変更のようなので、何回かに分けて見ていきます。
・// グリッドの開始Y位置を決める定数を定義 final int GRID_BASE_Y = 60;
・UNITの配列gridが定義されます。その幅・高さを決める定数
// UNIT_SIZE間隔のグリッドデータ
final int GRID_W = 8;
final int GRID_H = 5;
Unit[][] grid = new Unit[GRID_H][GRID_W];
・それと同じサイズでbooleanの配列gridFlags
boolean[][] gridFlags = new boolean[GRID_H][GRID_W];
・// グリッド座標に変換する関数
int toGridX(float x) →getGridMouseX(),setGrid()
int toGridY(float y) →getGridMouseY(),setGrid()
・// グリッドデータ範囲内かどうか
boolean isInGrid(int gx, int gy) →isHitGrid(),setGrid()
・// マウス座標をグリッドにぴったり合うようにして返す関数
int getGridMouseX()は toGridX()をコール
int getGridMouseY()は toGridY()をコール
・// グリッド上の他のユニットに当たる場合はtrueを返す
boolean isHitGrid()は
isInGrid()をコール
配列grid[][]使用
・// グリッドデータを初期化する
void clearGrid() は配列grid[][]使用
・// グリッドデータにユニットを設定
void setGrid()は
toGridX(),toGridY(),isInGrid(),unit.isStop()をコール
配列grid[][]使用
・// 繋がっているユニットの数を再帰的に数える
int countLinkedUnit()は
isInGrid(),isFirst,unit.isStop(),countLinkedUnit()をコール
配列gridFlags[][]使用
・// グリッドを調査して繋がりを判定、描画
void drawGridLinks()は
配列grid[][]使用
countLinkedUnit(),unit.lifeFrames,unit.drawLinks()
・// グリッドデータのデバッグ表示
void drawGridInfo()
再帰的処理…脳ミソがクラインの壺状態になってしまいます(笑)
《インデックス》
◆◆◆参考文献「遊んで作るスマホゲームプログラミング for Android」
◆◆◆公文生ならゲームで遊ぶな!ゲームを作れ!
◆◆◆公文式小林教室◆山形県東根市◆◆◆
・// グリッドの開始Y位置を決める定数を定義 final int GRID_BASE_Y = 60;
・UNITの配列gridが定義されます。その幅・高さを決める定数
// UNIT_SIZE間隔のグリッドデータ
final int GRID_W = 8;
final int GRID_H = 5;
Unit[][] grid = new Unit[GRID_H][GRID_W];
・それと同じサイズでbooleanの配列gridFlags
boolean[][] gridFlags = new boolean[GRID_H][GRID_W];
・// グリッド座標に変換する関数
int toGridX(float x) →getGridMouseX(),setGrid()
int toGridY(float y) →getGridMouseY(),setGrid()
・// グリッドデータ範囲内かどうか
boolean isInGrid(int gx, int gy) →isHitGrid(),setGrid()
・// マウス座標をグリッドにぴったり合うようにして返す関数
int getGridMouseX()は toGridX()をコール
int getGridMouseY()は toGridY()をコール
・// グリッド上の他のユニットに当たる場合はtrueを返す
boolean isHitGrid()は
isInGrid()をコール
配列grid[][]使用
・// グリッドデータを初期化する
void clearGrid() は配列grid[][]使用
・// グリッドデータにユニットを設定
void setGrid()は
toGridX(),toGridY(),isInGrid(),unit.isStop()をコール
配列grid[][]使用
・// 繋がっているユニットの数を再帰的に数える
int countLinkedUnit()は
isInGrid(),isFirst,unit.isStop(),countLinkedUnit()をコール
配列gridFlags[][]使用
・// グリッドを調査して繋がりを判定、描画
void drawGridLinks()は
配列grid[][]使用
countLinkedUnit(),unit.lifeFrames,unit.drawLinks()
・// グリッドデータのデバッグ表示
void drawGridInfo()
再帰的処理…脳ミソがクラインの壺状態になってしまいます(笑)
《インデックス》
◆◆◆参考文献「遊んで作るスマホゲームプログラミング for Android」
◆◆◆公文生ならゲームで遊ぶな!ゲームを作れ!
◆◆◆公文式小林教室◆山形県東根市◆◆◆
コメント