纯python shogi库,具有移动生成、验证和处理常见格式。
python-shogi的Python项目详细描述
简介
这是用纯python编写的shogi模块。它基于python chess commit 6203406259504cddf6f271e6a7b1e04ba0c96165。
这是python shogi中的学者搭档:
>>>importshogi>>>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
功能
支持Python2.7和Python3.3+。
支持标准Shogi(Hon Shogi)
合法移动生成器和移动验证。
>>>shogi.Move.from_usi("5i5a")inboard.legal_movesFalse
做和不做动作。
>>>last_move=board.pop()# Unmake last move>>>last_moveMove.from_usi('2b3a')>>>board.push(last_move)# Restore
显示一个简单的ascii板。
>>>print(board)lnsg.k+Bnl.r..gB...pppppp.pp......p.............P......PP.PPPPPP.......R.LNSGKGSNL<BLANKLINE>S*1
展示一个kif风格的棋盘。
>>>print(board.kif_str())後手の持駒:987654321+---------------------------+|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_number8
检测检查和攻击。
>>>board.is_check()True>>>board.is_attacked_by(shogi.BLACK,shogi.A4)True>>>attackers=board.attackers(shogi.BLACK,shogi.H5)>>>attackersSquareSet(0b111000010000000000000000000000000000000000000000000000000000000000000000000000)>>>shogi.H2inattackersTrue>>>print(attackers)......................................................................1....111...
分析并创建移动的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')
读写kifs。
>>>importshogi.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协议通信。
解析专业Shogi玩家的姓名
>>> import shogi.Person
>>> shogi.Person.Name.is_professional('羽生 善治 名人・棋聖・王位・王座') True
性能
python shogi不打算用于严重的shogi引擎 性能至关重要。目标是创建一个简单的 高级图书馆。
您可以安装gmpy2或gmpy(https://code.google.com/p/gmpy/)模块 为了在基本操作(如位扫描)上稍微提高性能 还有人口统计。
python shogi将只导入非常基本的general(与shogi无关) 本地库中的操作。所有的逻辑都是纯python。总会有 做纯粹的Python后援。
安装
使用pip:
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
如果要从标准输出中打印行,请执行如下的notests。
> nosetests -s
如果要在不同的python版本之间进行测试,请执行tox。
> pip install tox > tox
待办事项
- 支持USI协议。
- 支持board.generate_attacks()并在board.is_attacked_by()和board.attacker_mask()中使用。
- 移除旋转的位板,并像最近的python象棋一样支持Shatranj-style direct lookup。
- 支持CSA TCP协议中的%matta等。
- 支撑板。被固定()和板。固定()。