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)