Digパターンについて。
毎フレームごとに処理を少しずつ進めていくデザインパターン。
処理を毎フレームごとに、少しずつ掘り進めて行くように実行されることからDigパターンと呼んでいる。 Stateパターンの亜種であるが、上から下に処理が流れるイメージを重要視している。
ゲーム開発における短いアニメーションなどに使える。
クラス図
クラス図ダウンロード
サンプル
package test_a; import com.amaraimusi.zss_lib.CalcUtil; public class Test013Dig { private static int m_nekoDigStt=0; private static NekoDig m_nekoDig; public static void main(String[] args) { CalcUtil.init(); System.out.println("テスト開始"); //Digクラス m_nekoDig=new NekoDig(); //擬似スレッド for(int i=0;i<100;i++){ m_nekoDigStt=m_nekoDig.Dig(m_nekoDigStt); if(m_nekoDigStt==-1){ System.out.println("別の処理"); System.out.println("Digクラスの処理が終了しました。"); break; } } System.out.println("テスト終了"); } } //Digインターフェース interface IDig{ abstract int Dig(int digState); } //★Digクラス。 毎フレーム、少しずつ処理を進めていく仕組みを実装。 class NekoDig implements IDig{ @Override public int Dig(int digState) { if(digState==0){ System.out.println("処理その1"); digState=1;//dig状態を1にする。 return digState; } if(digState==1){ //10分の1の確率で状態1を抜ける。 System.out.println("処理その2"); int r=CalcUtil.rnd(10); if(r==1){ digState=2;//dig状態2 } return digState; } if(digState==2){ System.out.println("処理その3"); digState=-1;//dig状態を-1にしてdig処理終了 return digState; } return -1; } }
サンプルダウンロード(Test013Dig.java)