Package: python-shogi
IntroductionThis is the module for shogi written in Pure Python. It’s based on python-chesscommitThis is the scholars mate in 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()TrueFeaturesSupports Python 3.3+.Supports standard shogi (hon shogi)Legal move generator and move validation.>>>shogi.Move.from_usi("5i5a")inboard.legal_movesFalseMake and unmake moves.>>>last_move=board.pop()# Unmake last move>>>last_moveMove.from_usi('2b3a')>>>board.push(last_move)# RestoreShow a simple ASCII board.>>>print(board)lnsg.k+Bnl.r..gB...pppppp.pp......p.............P......PP.PPPPPP.......R.LNSGKGSNL<BLANKLINE>S*1Show a KIF style board.>>>print(board.kif_str())後手の持駒：９８７６５４３２１+---------------------------+|v香v桂v銀v金・v玉馬v桂v香|一|・v飛・・v金角・・・|二|v歩v歩v歩v歩v歩v歩・v歩v歩|三|・・・・・・v歩・・|四|・・・・・・・・・|五|・・歩・・・・・・|六|歩歩・歩歩歩歩歩歩|七|・・・・・・・飛・|八|香桂銀金玉金銀桂香|九+---------------------------+先手の持駒：銀Detects checkmates, stalemates.>>>board.is_stalemate()False>>>board.is_game_over()TrueDetects repetitions. Has a half move clock.>>>board.is_fourfold_repetition()False>>>board.move_number8Detects checks and attacks.>>>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...Parses and creates USI representation of moves.>>>board=shogi.Board()>>>shogi.Move(shogi.E2,shogi.E4).usi()'2e4e'Parses and creates SFENs>>>board.sfen()'lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1'>>>board.piece_at(shogi.I5)Piece.from_symbol('K')Read 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'Export to KIFs.>>>importshogi>>>importshogi.KIF>>>board=shogi.Board()>>>shogi.KIF.Exporter.kif_move_from('7g7f',board)'７六歩(77)'>>>sfen_summary={'moves':['7g7f','3c3d'],'sfen':'lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1','names':['羽生善治','藤井猛'],'win':'w'}>>>shogi.KIF.Exporter.kif(sfen_summary)開始日時：\r終了日時：\r手合割：平手\r先手：羽生善治\r後手：藤井猛\r手数----指手---------消費時間--\r1７六歩(77)\r2３四歩(33)\r3投了\rまで2手で後手の勝ち\rCommunicate with a CSA protocol.Please seerandom_csa_tcp_match.Parse professional shogi players’ name>>> import shogi.Person>>> shogi.Person.Name.is_professional('羽生　善治 名人・棋聖・王位・王座')
TruePerformancepython-shogi is not intended to be used by serious shogi engines where
performance is critical. The goal is rather to create a simple and relatively
highlevel library.You can install thegmpy2orgmpymodules
in order to get a slight performance boost on basic operations like bit scans
and population counts.python-shogi will only ever import very basic general (non-shogi-related)
operations from native libraries. All logic is pure Python. There will always
be pure Python fallbacks.InstallingWith pip:pip install python-shogiHow to test> make testIf you want to print lines from the standard output, execute nosetests like following.> poetry run nosetests -sHow to releasepoetry config repositories.testpypi https://test.pypi.org/legacy/
# poetry config pypi-token.testpypi "Test PyPI API Token"
make test-upload
# poetry config pypi-token.pypi "PyPI API Token"
make uploadToDoSupport board.generate_attacks() and use it in board.is_attacked_by() and board.attacker_mask().Remove rotated bitboards and supportShatranj-style direct lookuplike recent python-chess.Support %MATTA etc. in CSA TCP Protocol.Support board.is_pinned() and board.pin().