Articles

curso-r/chess

CRANステータスCodecovテストカバレッジrビルドステータスrビルドステータスrビルドステータスCRANステータスCranステータス

overview

{chess}は、niklas fiekasによって作成されたamazinglibraryであるr aroundpython-chessの独断的なラッパーです。 これにより、ユーザーはchessbooksに見られるようなゲームツリーを作成して探索するだけでなく、PGNファイルを読み書きすることができます。CRANから{chess}のリリースされたバージョンをインストールします。

install.packages("chess")

またはGitHubから開発バージョンをインストールします。

# install.packages("remotes")remotes::install_github("curso-r/chess")

これは自動的にpython-chessを{reticulate}環境にインストールしますが、convenientfunctionで明示的に行うこともできます。

chess::install_chess()

example

既存のゲームを読むには、単にread_game()forward()back()variations()variation(){chess}vignette("games")game()move()関数は、移動だけでなく、thegameのツリーを枝追加します。 文字列は単純な移動に変換されますが、list()はPGNの括弧として正確に動作し、最後の移動のバリエーションが作成されます。ここでは、Scholar’smateを再作成する方法とそれを回避する方法を見ることができます。

# Scholar's mate and some defensesscholars_mate <- game() %>% move("e4") %>% move("e5", list("e6"), list("d5")) %>% move("Bc4") %>% move("Nc6", list("Nf6")) %>% move("Qh5") %>% move("Nf6", list("g6", "Qf3", "Nf6")) %>% move("Qxf7")# Last mainline movescholars_mate#> <4. Qxf7#>#> r . b q k b . r#> p p p p . Q p p#> . . n . . n . .#> . . . . p . . .#> . . B . P . . .#> . . . . . . . .#> P P P P . P P P#> R N B . K . N R

move()vignette("chess")を参照してください。p>

{chess}また、特定の時点でゲーム全体とボードの両方を見る多くの方法を備えています。p>

# Print with unicode (doesn't look good on GitHub)print(scholars_mate, unicode = TRUE)#> <4. Qxf7#>#> ♜ . ♝ ♛ ♚ ♝ . ♜#> ♟ ♟ ♟ ♟ . ♕ ♟ ♟#> . . ♞ . . ♞ . .#> . . . . ♟ . . .#> . . ♗ . ♙ . . .#> . . . . . . . .#> ♙ ♙ ♙ ♙ . ♙ ♙ ♙#> ♖ ♘ ♗ . ♔ . ♘ ♖# Export the FEN of the boardfen(scholars_mate)#> "r1bqkb1r/pppp1Qpp/2n2n2/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4"# See the PGN after some movestr(back(scholars_mate, 3))#> 2... Nc6 3. Qh5 Nf6 ( 3... g6 4. Qf3 Nf6 ) 4. Qxf7## Export the PGN after some movepgn(back(scholars_mate, 3))#> "2... Nc6 3. Qh5 Nf6 ( 3... g6 4. Qf3 Nf6 ) 4. Qxf7#"# Plot current boardplot(scholars_mate)

モチベーション

python-chessは、{chess}{rchess})は、”move generation、move validation”(強力なクラスとオブジェクト指向の構文)を幅広く扱いますが、{chess}は、Pgnをツリーとして作成して探索することに焦点を当てています。

APIの範囲を絞り込むことで、ソフトウェアをポイントアンドクリックすることなく、共有可能なgameanalysesをすばやく作成したり、他の人のゲームを簡単に探索したりしたい人には、パッケージがより直感的になると信じています。p>

{chess}の最初の使用は、私がBobby Fischerの私の60memorableゲームを勉強するのを助けてくれました。 いくつかの非常に困難な解析の後、私は本全体をPGNに変換してアップロードすることができましたが、インターフェイスが不器用すぎるように感じました…

ロードマップ

  • NAGs
  • ヘッダー
  • FENからゲームを開始
  • より良いプロット
  • より多くのステータス関数
  • 他のOSs
  • 単体テスト
  • 単体テスト
  • 高度な使用法
  • スタイラー
  • cran
  • stockfish api
  • 静的ボード(パズル)
  • 光沢がありますか?

行動規範

{chess}プロジェクトはContributorCodeでリリースされていることに注意してくださいofConduct.By このプロジェクトに貢献するには、その条件を遵守することに同意します。P>

ライセンス

{chess}はGPL3(またはそれ以降のバージョン)の下でライセンスされています。 OutLICENSEをチェックしてください。完全なテキストのためのmd。