Skip to main content

一个纯 Python 将棋库,具有移动生成、验证和处理常见格式的功能。

项目描述

https://travis-ci.org/gunyarakun/python-shogi.svg https://coveralls.io/repos/gunyarakun/python-shogi/badge.svg https://badge.fury.io/py/python-shogi.svg

介绍

这是用纯 Python 编写的将棋模块。它基于 python-chess 提交 6203406259504cddf6f271e6a7b1e04ba0c96165。

这是python-shogi中的学者伙伴:

>>> import shogi

>>> board = shogi.Board()

>>> board.push(shogi.Move.from_usi('7g7f'))

>>> board.push_usi('3c3d')
Move.from_usi('3c3d')
>>> board.push_usi('8h2b+')
Move.from_usi('8h2b+')
>>> board.push_usi('4a5b')
Move.from_usi('4a5b')
>>> board.push_usi('B*4b')
Move.from_usi('B*4b')
>>> board.push_usi('5a4a')
Move.from_usi('5a4a')
>>> board.push_usi('2b3a')
Move.from_usi('2b3a')
>>> board.is_checkmate()
True

特征

  • 支持 Python 2.7 和 Python 3.3+。

  • 支持标准将棋 (hon shogi)

  • 合法移动生成器和移动验证。

    >>> shogi.Move.from_usi("5i5a") in board.legal_moves
    False
  • 制定和取消行动。

    >>> last_move = board.pop() # Unmake last move
    >>> last_move
    Move.from_usi('2b3a')
    
    >>> board.push(last_move) # Restore
  • 展示一个简单的 ASCII 板。

    >>> print(board)
     l  n  s  g  .  k +B  n  l
     .  r  .  .  g  B  .  .  .
     p  p  p  p  p  p  .  p  p
     .  .  .  .  .  .  p  .  .
     .  .  .  .  .  .  .  .  .
     .  .  P  .  .  .  .  .  .
     P  P  .  P  P  P  P  P  P
     .  .  .  .  .  .  .  R  .
     L  N  S  G  K  G  S  N  L
    <BLANKLINE>
     S*1
  • 展示一个 KIF 风格的板。

    >>> print(board.kif_str())
    後手の持駒
              
    +---------------------------+
    |v香v桂v銀v金 v玉 馬v桂v香|
    | v飛  v金    |
    |v歩v歩v歩v歩v歩v歩 v歩v歩|
    |      v歩  |
    |         |
    |         |
    |         |
    |         |
    |         |
    +---------------------------+
    先手の持駒 
  • 检测将死,僵局。

    >>> board.is_stalemate()
    False
    >>> board.is_game_over()
    True
  • 检测重复。有一个半移动时钟。

    >>> board.is_fourfold_repetition()
    False
    >>> board.move_number
    8
  • 检测检查和攻击。

    >>> board.is_check()
    True
    >>> board.is_attacked_by(shogi.BLACK, shogi.A4)
    True
    >>> attackers = board.attackers(shogi.BLACK, shogi.H5)
    >>> attackers
    SquareSet(0b111000010000000000000000000000000000000000000000000000000000000000000000000000)
    >>> shogi.H2 in attackers
    True
    >>> print(attackers)
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . 1 .
    . . . 1 1 1 . . .
  • 解析并创建移动的 USI 表示。

    >>> board = shogi.Board()
    >>> shogi.Move(shogi.E2, shogi.E4).usi()
    '2e4e'
  • 解析和创建 SFEN

    >>> board.sfen()
    'lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1'
    >>> board.piece_at(shogi.I5)
    Piece.from_symbol('K')
  • 阅读 KIF。

    >>> import shogi.KIF
    
    >>> kif = shogi.KIF.Parser.parse_file('data/games/habu-fujii-2006.kif')[0]
    
    >>> kif['names'][shogi.BLACK]
    '羽生善治'
    >>> kif['names'][shogi.WHITE]
    '藤井猛'
    >>> kif['moves'] # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
    ['7g7f',
     '3c3d',
     ...,
     '9a9b',
     '7a7b+']
    >>> kif['win']
    'b'
  • 使用 CSA 协议进行通信。

    请参阅random_csa_tcp_match

  • 解析职业将棋选手的名字

    >>> import shogi.Person
    
    >>> shogi.Person.Name.is_professional('羽生 善治 名人・棋聖・王位・王座')
    True
    

表现

python-shogi 不适用于性能至关重要的严肃将棋引擎。目标是创建一个简单且相对高级的库。

您可以安装gmpy2gmpy ( https://code.google.com/p/gmpy/ ) 模块,以便在位扫描和人口计数等基本操作上获得轻微的性能提升。

python-shogi 只会从本地库中导入非常基本的通用(非将棋相关)操作。所有逻辑都是纯 Python。总会有纯 Python 的后备。

安装

  • 用点子:

    sudo pip install python-shogi
  • 从当前源代码:

    python setup.py sdist
    sudo python setup.py install

如何测试

> nosetests
or
> python setup.py test # requires python setup.py install

如果要从标准输出打印行,请执行如下的鼻子测试。

> nosetests -s

如果要在不同的 Python 版本之间进行测试,请执行 tox。

> pip install tox
> tox

如何释放

rm -rf dist
python setup.py sdist
twine upload dist/*

去做

  • 支持 USI 协议。

  • 支持 board.generate_attacks() 并在 board.is_attacked_by() 和 board.attacker_mask() 中使用。

  • 移除旋转位板并支持Shatranj 风格的直接查找,如最近的 python-chess。

  • 支持 CSA TCP 协议中的 %MATTA 等。

  • 支持 board.is_pinned() 和 board.pin()。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

python-shogi-1.0.15.tar.gz (54.8 kB 查看哈希)

已上传 source