オブジェクト指向的なゲームオブジェクトの書き方。

C言語の関数を返す関数の型の話が話題になってたので、
YTさんに関数を返す関数とかといったらD言語の問題が解決できちゃいました。
CPSッポクかけて嬉しいです。

typedef typeof(Move) delegate() Move;
class Enemy {
	Move movef;
	this() {
		movef = &a;
	}
	void move() {
		movef = movef();
	}
	Move a() {
		printf("a\n");
		return &b;
	}
	Move b() {
		printf("b\n");
		return &a;
	}
}

void main() {
	Enemy e = new Enemy();
	for (int i = 0; i < 10; i++)
		e.move();
}

で、ababababa...と出ます。
このほうが、制御の流れが分かりやすいっしょ。