ミニマックス(手軽に将棋用)ライブラリ
ミニマックス法(正確にはアルファベータ法)を用いたCPUルーチンを実装した、将棋用のライブラリを作ってみました。
ライブラリの仕様
盤面と持ち駒を考慮のうえ、CPUは評価関数に基づいた最善手を打ち続けます。 なお、探索の深さは呼び出し側から任意で設定できます。
ライブラリの使い方
CPUが評価に基づく手を打つ関数
get_best_move(dummy_board, hands, turn_val, total_turn, depth)| 引数 | 盤面, 持ち駒, 手番(1or2), 何手目か, 探索の深さ指定 |
| 戻り値 | 打つ手の値 値は6桁の数値で返ってきます。 上位二桁:移動元盤面座標(持ち駒を打つ場合-1) 真ん中2桁:移動先盤面座標 下二桁:駒の種類(持ち駒を打った時用) |
選択した駒がそのマスに移動可能かを判定する関数
get_legal_moves(dummy_board, s_idx, t_idx, turn_val)| 引数 | 盤面, 選択されている駒の位置, 移動可能か判定する位置, 手番(1or2) |
| 戻り値 | 移動不可:0、移動可能:1 |
そのマスに持ち駒を打てるかチェックする関数
calc_can_drop(dummy_board, idx, turn_val, hand_type)| 引数 | 盤面, 判定する場所, 手番(1or2), 駒の種類 |
| 戻り値 | 打てない:0、打てる:1 |
勝敗判定用関数
check_win_status(dummy_board, turn_val)| 引数 | 盤面, 手番(1or2) |
| 戻り値 | 先手の勝利:1、後手の勝利:2、それ以外の時:0 |
ダウンロード
下のリンクからファイルをダウンロードできます。
minimax3.zip ※ZIP形式で圧縮されてるので、使う前に解凍してね!
使用ライブラリについて
本DLLは GNU Compiler Collection (gfortran) を使用してビルドされています。
これに含まれるランタイムライブラリには、GCC Runtime Library Exception が適用されています。