ミニマックス(手軽に連珠用)ライブラリ
ミニマックス法を用いたCPUルーチンを実装し、ルールの簡略化がなされた連珠用ライブラリを作ってみました。
ライブラリの仕様
基本的に15×15の盤面なので、処理速度を考慮して探索の深さは4にしています。
CPUは、評価関数に基づいた最善手を打ち続けます。
アルゴリズムは攻撃重視なので、少しわきが甘いところがあるかもしれません。
ライブラリの使い方
CPUが評価に基づく手を打つ関数と、勝利判定を行う関数が実装されています。
get_best_move(board, n, tx, ty, total_turn, player)| 引数 | 盤面, サイズ, 最後に打ったX, 最後に打ったY, 総ターン数, 手番(1or2) |
| 戻り値 | 初手先手時は中央値, その他の場合は打つ手の値 |
check_game_end(board, n, tx, ty, total_turn, player)
| 引数 | 盤面, サイズ, 最後に打ったX, 最後に打ったY, 総ターン数, 手番(1or2) |
| 戻り値 | -1: 満局, 0:継続, 1:黒勝利, 2:白勝利 3:黒の長連, 4:黒の三三, 5:黒の四四 |
元々、盤面のサイズは可変にしようと思っていたため、サイズという引数が残っています。 現在の仕様では、サイズは15でしか動作しないので、実質的に固定値となっています。
ダウンロード
下のリンクからファイルをダウンロードできます。
minimax1.zip ※ZIP形式で圧縮されてるので、使う前に解凍してね!
使用ライブラリについて
本DLLは GNU Compiler Collection (gfortran) を使用してビルドされています。
これに含まれるランタイムライブラリには、GCC Runtime Library Exception が適用されています。