Articles

curso-r/chess

Statut CRANCouverture de test CodecovStatut de construction RStatut de construction R

Overview

{chess}est un wrapper opiniâtre pour R autour de python-chess, une bibliothèque étonnante créée par Niklas Fiekas. Il permet aux utilisateurs de lire et d’écrire des fichiers GPN ainsi que de créer et d’explorer des arbres de jeu tels que ceux vus dans les chessbooks.

Installation

Installez la version publiée de {chess} depuis CRAN:

install.packages("chess")

Ou installez la version de développement depuis GitHub avec:

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

Cela devrait installer automatiquement python-chess dans votre environnement {reticulate}, mais vous pouvez également le faire explicitement avec une fonction pratique:

chess::install_chess()

Exemple

Pour lire un jeu existant, utilisez simplement read_game(). Pour l’explorer, vous pouvez utiliser forward()back(), ainsi que variations()variation() pour voir toutes les variantes répertoriées pour le prochain coup et en choisir une.

De nombreux autres jeux sont inclus avec le package afin que vous puissiez vous lever et courir dès que vous installez {chess}! Voir vignette("games") pour plus d’informations.

Vous pouvez également créer votre propre jeu avec game() et ajouter des variations toit: la fonction move() ajoute des mouvements ainsi que des branches à l’arbre du jeu. Les chaînes sont converties en mouvements simples, tandis que list() se comportent de manière précise comme des parenthèses dans PGN, créant une variation du dernier mouvement.Ici, vous pouvez voir comment recréer un Scholar’smate et quelques façons de l’éviter:

# 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

Notez qu’il existe de nombreuses façons de structurer l’entrée en move(). Voir vignette("chess") pour plus d’informations.

{chess}propose également de nombreuses façons de voir à la fois le jeu dans son ensemble et le plateau à un moment précis.

# 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)

Motivation

python-chess a servi d’inspiration (et d’épine dorsale) pour {chess}.Alors que la version originale (et {rchess} d’ailleurs) gère largement « génération de mouvements, validation de mouvements » (avec des classes puissantes et une syntaxe orientée objet), {chess} se concentre sur la facilité de création et d’exploration de PGNs sous forme d’arbres.

En réduisant la portée de l’API, je crois que le package devient plus intuitif pour les personnes qui veulent simplement créer rapidement des analyses de jeux partageables ou explorer facilement les jeux d’autres personnes sans avoir à recourir au logiciel pointer et cliquer.La première utilisation de

{chess} m’a aidé à étudier les jeux My 60Memorable de Bobby Fischer. Après une analyse très difficile, j’ai pu convertir tout le livre en PGN et le télécharger en ligne, mais j’avais toujours l’impression que l’interface était trop maladroite

Feuille de route

  • NAGs
  • En-têtes
  • Démarrer le jeu à partir de FEN
  • Meilleur traçage
  • Plus de fonctions d’état
  • Autres OS
  • Tests unitaires
  • ous pouvez également utiliser des cartes statiques (casse-tête) pour créer des cartes de Stockfish (puzzles), des cartes statiques (puzzles), des cartes de Stockfish (PUZZLES), des cartes de Stockfish (puzzles), des cartes de Stockfish (puzzles), des cartes de Stockfish (puzzles), des cartes de Stockfish), des cartes de Stockfish (puzzles), des cartes de Stockfish (puzzles) et des cartes de Stockfish (puzzles).

Code de conduite

Veuillez noter que le projet {chess} est publié avec un code contributif ofConduct.By en contribuant à ce projet, vous acceptez de respecter ses conditions.

License

{chess} est sous licence GPL 3 (ou toute version ultérieure chez vous). Vérifiez la licence.mdpour le texte intégral.