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点法に対応し、従来の勝ち判定に加えて無勝負を判別できるようにした変更である。
変更内容
- 入玉判定のルールを
NyugyokuRuleenumとして定義し、LAW_24とLAW_27を選択可能にした。 - 入玉判定結果を
NyugyokuResultenumとして定義し、以下の3状態を区別するようにした。NYUGYOKU_NONE: 宣言条件を満たさないNYUGYOKU_WIN: 宣言勝ちNYUGYOKU_DRAW: 無勝負
- 24点法では、共通の宣言条件を満たす局面について以下の結果を返すようにした。
- 31点以上:
NYUGYOKU_WIN - 24~30点:
NYUGYOKU_DRAW - 23点以下:
NYUGYOKU_NONE
- 31点以上:
- 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点法に対応していないため、保留している。