pythonのビットボードによる低負荷なオセロシステムを実装しました。関数の説明をします。
また、minmax法に用いている評価関数を改良するなどしてみてください。pythonとオセロを組み合わせて使う場合には是非ご活用ください。
-
盤面とプレイヤーの色を入力すると、そのプレイヤーが石を置ける場所が返ってきます。
-
盤面とプレイヤーの色、プレイヤーが石を置く場所を入力すると、ひっくり返る石のリストや、それを反映させた盤面がかえってくる。
-
盤面を入力すると、確定石の場所がそれぞれの色について返ってきます。
-
盤面を入力すると、その盤面の(白目線の)評価値が返ってきます。minimax法の実装に使います。
-
minimax法により最も評価の高い手が返ってきます。
-
8*8のオセロの盤面を模したnumpy配列と、playerの色を与えると、bitboard用に変換されて返ってきます。
-
ビットボードのオセロ盤面を入力すると、8*8のnumpy配列に変換されます。
現在の評価関数は、着手可能手数の差、確定石の数の差、1マスごとに与えられた得点をもとに決める盤面評価値、枚数の差、辺の埋まり具合などの割合を調節して点数をつけています。詳しくはコードを参照(読みにくいけど)
外部のオセロサイトの盤面を取得するソースコード、盤面の画像を入力したらその盤面をnumpy配列に変換するソースコードについては、それらも一緒に公開すると近日一部有料で発売予定のソフトのシステムが完成してしまう恐れがあるため、公開は見送ります。