[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: Boardインスタンスの使い方



>> そういや、C++では、盤面の状態を表現する構造体を、引数として
>> スタックに積んで先読みしましたが、Javaだと、呼び出しの度に
>> clone()かな(遅そう)。
>
>手番毎に一回の実行であればさほど気にする必要は
>ないと思います。

この手のゲームだと、ある盤面の状態について、可能な手を全てリ
ストアップし、それぞれの手を実際に打ってみて、何手か先で盤面
の評価値を求めるのですよね。で、「実際に打ってみる」ときに、
スタック上に新たな盤を作り出すわけですから、手番毎にウン万回
実行されるはず...

>> 真剣にチューニングするなら、(略)
>
>とりあえずチューニングはしないという方針は
>いかがでしょうか。^_^

ま、それが基本ですね。(^^)

ずっと前、Solaris上のJDK1.0にて、Javaのベンチマークをやった
ことがあります。その時は、配列をヒープに取ってもそんなに遅く
ないという結果が出たのですが...

長くなるのでそれはまた別便で。

>> その場合、Playerさんは、「正式盤面」へのポインタを保持するこ
>> とは許されていないのでしょうか。Boardの内容をコピーするのは
>> もちろん、「コマを置く」メソッドをコールするのも、全てJudge
>> 経由で行なう、と。
>> 
>> それはそれで正しい設計だと思います。ちょっと面倒そうではあり
>> ますが。
>
>思考ルーチンを公募して互いに戦わせたりするなら、必須ですよね。
>そうでない場合にも、assertion代わりにJudgeが
>「そこに置けるのか?」判定をした方がいいと思います。

私は、「そこに置けるのか?」判定は、Boardがやるべきじゃないか
なあ、と思っています。自動置ける置けない判定/コマ反転機能付
きのインテリジェンスなオセロ盤、ということで。

確かにJudgeという名前からすれば、Judgeがやってくれた方が良さ
そうなんですが、盤面の状態はBoardが押さえているのですから、
それをJudgeが無闇に参照するのはどうかなあ、と。

少なくとも、コマが置かれた時に、返せるコマを裏返すのは、
Boardの仕事だと思っています。Boardが保持している盤面の状態に
対して、Judgeに書き込み権限(メソッドを介すとはいえ)を持たせ
るのには抵抗があります。そうなると、やっぱり判定もBoardに来
るような。

>ちなみに、Judgeではなく、Gameという名前にして、ゲームの
>流れ全体をあらわすオブジェクト、という位置づけにした方が私の好み。

Judgeというクラス名には実は私も抵抗がありまして...

私の設計では、Judgeって単なる進行役なんですけど、英語で何て
言うんでしょう? (^^;

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------