トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2013-6-13

続続BlokusDuo/JavaRock

ピースの選択ルーチンにスレッドを使う例.
スレッド毎にそれぞれ盤面をもつような構成になっている(そうせざるを得ない).
SimplePlayerSearchThread.java(243)
SimplePlayer2.java(252)
SimplePlayerSearchThreadが実際に探索(というほどじゃないけど)を行うスレッドで,
SimplePlayer2は,二つのスレッドのインスタンスを生成してハンドリングしている.
探索ルーチンは,'u'から'a'までのまだ置いてないピースを順にあてはめていくというもの.

それぞれ,JavaRockでコンパイルしたHDLは↓の通り.
net_wasamon_blokus_javarock_simpleplayersearchthread.vhd(208)
net_wasamon_blokus_javarock_simpleplayer2.vhd(212)
JavaRockでコンパイルするときには,Threadの終了とか開始とかのビジーループの中の
Thread.sleepはコメントアウトしないといけません.

Diary/2013-6-11で公開しているののSimplePlayer.javaと置換可能なので,
使うときには↓のようにインスタンス生成のとこを置換すればいい.
GameAgent.java(292)
生成されたHDLは↓の通り.
net_wasamon_blokus_javarock_gameagent.vhd(211)

こういうことをしたいときに,
継承とかインタフェースとか使ってJavaプログラムらしく切り替えられないのは,
現状のJavaRockの弱いところ.

気になる(?)合成結果は.スレッド使わない版に比べて約+10%でした.

ちなみに,両者を対戦させてみたら,今日のの方が弱かった.
評価関数とかないけど,よりたくさん,コマ数の大きなピースを探索してるってだけで
単純に強くなるのかな,とか思ったけど,そんなことはなかった.
DOSプロンプトが実際にFPGA同士で対戦させた場合で,
綺麗な(?)画面がJavaプログラムとして対戦させた結果.
このプレーヤ達にはランダム要素がないために,
実機でもソフトウェア実行でも結果が同じになっているのがJavaRock的にはミソ.

6/11版が先攻
6/11版が後攻