Clamini library

ミニマックス(手軽に将棋用)ライブラリ

 ミニマックス法(正確にはアルファベータ法)を用いた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 が適用されています。