Step 08 of 12
評価関数
盤面を数値化する evaluate と、最高スコアの手を選ぶ chooseBestMove を書きます。
探索なしの「1 手先評価」だけでも、ランダム AI よりずっと強くなります — 特に角を取るようになる。
About this step
なぜ角が +120?
オセロの角は 絶対にひっくり返されない特別なマスです。 そこに自分の石を置ければ、その影響で辺も支配しやすくなるので大きくプラス。 逆に角の隣 (X マス / C マス) は「角を相手にプレゼントしやすい」マスなので 大きくマイナスに設定してあります — 配置の原則を数値で表した表です。
snapshot / restore の罠
chooseBestMove の中で各手を仮に打つ時、placeAt が
board を書き換えるので、評価が終わったら必ず元に戻す必要があります。
restore を忘れると 2 手目以降の評価が前の仮置きの上で行われて無意味に。
for ループで動的に盤面を壊して戻す、というテクは minimax でも同じ罠。
動かしてみる
Run して何度か対局してみて、白 AI が 角をしっかり取りに来るかを確認。 Step 07 のランダム AI と比べて明らかに強くなります。 余裕があれば POSITION_WEIGHTS の数値をいじって、白の好みを変えて遊んでみてください。