09/09/01 14:35:15 8OtNRGcI
アンカーだけ貼るのも大人げないと思った。ごめん。
>>203
ローグあんまり詳しくないので、例えを将棋に変更させてくれ。そんなに変わらんと思うし。
基本となるのは、ゲームの処理部分と描画部分は可能な限り分けるべき、という考え方。
あくまで個人的な考え方なので、参考までに。
まず、今回の話でいうゲーム処理/描画優先というのは、例えば「歩」を一歩前に進める処理をした場合、
ゲーム優先: y -= 1;
描画優先: y -= SQUARE_WIDTH; //SQUARE_WIDTHは1マスの大きさ
のようなコードになることを指す。
将棋の場合は、実際には相対座標ではなく棋譜のようなデータをやり取りするような気もするけどね。
当然ながら、SQUARE_WIDTH というのは描画に必要な数字であって、将棋のルーチンには関係がない。
ゆえに、処理と描画の分割の原則に反する。
実際に作るところを想像してみれば分かると思うが、
コマを動かす、コマを取る、コマを使う…などと、あらゆる場面で SQUARE_WIDTH の値が必要になる。
それらを関数に切り分けたとしても、やっぱり SQUARE_WIDTH が要ることには変わりない。
となると、グローバル変数にするか、全ての処理関数に引数として渡すか、処理クラスのメンバ変数にするか…
みたいな話になってしまう。これはちょっと面倒くさい。