TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

【cshogi】入玉宣言法の24点法に対応

cshogiを入玉宣言法の24点法に対応させた。

>>> from cshogi import *
>>> board = Board("ln1+R5/1P1+L+PK+P+P+P/pp2+B+PG2/9/2p6/2s6/3s+r4/1+nk+l1+p3/3b3NL b 2G2S6Pgn2p 1")
>>> board.nyugyoku_result() # デフォルト: LAW_24
2
>>> NYUGYOKU_DRAW
2
>>> board.is_nyugyoku() # デフォルト: LAW_27
True
>>> board.is_nyugyoku(LAW_24)
False

のようにして使用できる。

概要

入玉宣言法の24点法に対応し、従来の勝ち判定に加えて無勝負を判別できるようにした変更である。

変更内容

  • 入玉判定のルールを NyugyokuRule enumとして定義し、LAW_24 と LAW_27 を選択可能にした。
  • 入玉判定結果を NyugyokuResult enumとして定義し、以下の3状態を区別するようにした。
    • NYUGYOKU_NONE: 宣言条件を満たさない
    • NYUGYOKU_WIN: 宣言勝ち
    • NYUGYOKU_DRAW: 無勝負
  • 24点法では、共通の宣言条件を満たす局面について以下の結果を返すようにした。
    • 31点以上: NYUGYOKU_WIN
    • 24~30点: NYUGYOKU_DRAW
    • 23点以下: NYUGYOKU_NONE
  • 27点法では、従来どおり先手28点以上・後手27点以上を NYUGYOKU_WIN とする。
  • Board.nyugyoku_result(rule=LAW_24) を追加し、勝ち・無勝負・宣言不可を取得可能にした。
  • Board.is_nyugyoku(rule=LAW_27) を拡張し、指定ルールでの宣言勝ちのみをboolで返すようにした。24点法における無勝負は False となる。
  • Python APIから LAW_24、LAW_27 および入玉結果定数を公開した。

対局用スクリプト

対局用スクリプトcshogi.cliは、24点法に対応していない。 現状、USIプロトコルが24点法に対応していないため、保留している。