EXT_F_MARGINの値を3000*depthとする。

バグを見つける。

対策をとった。

FutilityCutのEXT_F_MARGINの値が分からない。

様々なサイトで調べて、兵(卒)の価値*depthとしているが。

改めてFutilityCutとNullMove枝刈りを装備する。

『やや弱い』に後手番で勝つ。

Pvsの導入に成功した。

『やや弱い』に短手数で勝つ。

Pvs探索もうまくいかず。

ソースはこれでいいはずなのだが。

futility_cutとnull_move_pruningを導入してみたのだが、うまくいかない。

今は消された某コンピュータ将棋系サイトにあったものを、殆どそのままコピーしたのだが・・・。前向き枝刈りしているのがまずいのか?

いや、バグではないか?

5手読みをさせてみたところ、2,3秒でちゃんと指すようになった。

バグ発見!

上図の時、将(師)が左右に動かない。 処理はしているはずだが、複雑過ぎて解析が難しい。

キラー手を導入。

5手で勝つ。

12手(日本将棋でいう23手)で勝利。

左側の車・馬がなかなか動かないのが気になる。

将棋は負け。

象棋の方は順調に強くなっている。

王手には100点、相手の将・師の8近傍に利きがあるときには10点を加算することにして、-100点以下の手は読まない『前向き枝刈り』を追加してみたところ、短手数で圧勝した。

バグはとったが、

ハム将棋に負けてしまう。

将棋の方は・・・。

バグ多し。桂馬が5つできてしまう。

王手延長+4手読みで勝つ。

単純4手先読みで、

象棋は負け、将棋はバグで中断。

どうにも弱すぎる。

日本将棋も中国象棋も思考部分をネガマックス関数を使った3手読みから作り直すことにする。

こんなん作ったっけ?。

将棋プログラムの参考に以前ダウンロードした池泰弘さんの『れさぴょん』のファイルを探したら、『Shougi』という名のフォルダが・・・。コンパイルして動かしてみるとちゃんと定跡も指すなかなかすぐれものだ。

ベクターに象棋プログラムをアップ。

今度は将棋に挑戦する。

細かくバグを修正する。

パス手枝刈りに使うNegaαβ関数を簡略化した。 後手番で2連続して勝つ。

後手でも勝つ。

ベーマガ復活。

早速勝ってしまった。ボードゲームだけでなく、他の種類のゲームを作るときの参考にしようと思う。

後手番では勝負つかず。

うーん・・・。

塞象眼・包の利きのバグを修正。

C++版を引っ張り出して作り直す。

C#版があまりにも弱いので、バグだらけで開発を断念していたC++版を改良することにした。結構単純にバグ取りができた上になかなか強い。ISDN象棋の最強レベルに勝った。

象棋プログラムは難しい・・・。

①一手だけ駒を進める。 ②利きを生成する。 ③一手戻す。 ④それに応じた利きを生成して元に戻す。 で、できるかと思っていたがどうにもならないバグが発生。 これを防ぐためには砲の駒をA,Bと別の駒と認識させ、虚の利き(砲の駒が相手の駒を取る以外の移動可…

以前作ったC#による象棋ゲームをまたいじり回してみる。

最弱モードには勝つようになったのだが、相手はJavaScriptなんだよな・・・。

倉庫番を解くプログラムjava版、ほぼ完成。

java独特のクセに悩んだが、ようやくできた。

オープンアドレスハッシュを試してみる。

とりあえず、成功した。