Articles

cursor / schaken

CRAN statusCodecov test dekkingR bouwen statusLevenscyclus: met looptijd

Overzicht

{chess} is een eigenwijze wrapper voor R aroundpython-schaken, een amazinglibrary gemaakt door Niklas Fiekas. Het stelt gebruikers in staat om bestanden te lezen en te writePGN evenals het maken en verkennen van game bomen, zoals die te zien zijn in chessbooks.

Installatie

Installeren van de versie van {chess} uit CRAN:

install.packages("chess")

Of installeren van de ontwikkeling versie van GitHub met:

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

Dit moet het automatisch installeren van python-schaken voor uw {reticulate}omgeving, maar je kunt ook expliciet doen met een convenientfunction:

chess::install_chess()

Voorbeeld

Te lezen van een bestaand spel, gebruik gewoon read_game(). Om het te verkennen kunt u forward()back(), evenals variations()variation() gebruiken om alle variaties te zien die voor de volgende zet worden weergegeven en er een te kiezen.

veel andere spellen zijn inbegrepen in het pakket, zodat u kunt opstaan en werken zodra u {chess}installeert! Zie vignette("games") voor meer informatie.

u kunt ook uw eigen spel maken met game() en variaties toevoegen aan het spel: de functie move() voegt bewegingen toe en vertakt de boomstructuur van het spel. Strings worden geconverteerd naar eenvoudige zetten, terwijl list()s behaveexactly als haakjes in PGN, het creëren van een variatie van de laatste zet.Hier kunt u zien hoe u een Scholar ‘ Smate opnieuw kunt aanmaken en enkele manieren om het te voorkomen:

# 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

merk op dat er veel manieren zijn om de invoer naar move()te structureren. Zievignette("chess") voor meer informatie.

{chess} bevat ook vele manieren om zowel het spel als geheel als het bord op een bepaald moment te zien.

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

motivatie

pythonschaak diende als inspiratie (en ruggengraat) voor {chess}.Terwijl de originele versie (en{rchess} wat dat betreft) in grote lijnen “move generation, move validation” (met krachtige klassen enobject-georiënteerde syntaxis) behandelt, richt {chess} zich op het eenvoudig maken en verkennen van PGN ‘ s als bomen.

door het bereik van de API te verkleinen, geloof ik dat het pakket intuã tiever wordt voor mensen die gewoon snel Deelbare gameanalyses willen maken of eenvoudig de games van anderen willen verkennen zonder te hoeven resortten naar point-and-click-software.

{chess} ’s eerste gebruik was om me te helpen Bobby Fischer’ s my 60Memorable Games te bestuderen. Na een aantal zeer difficultparsing,ik was in staat om te zetten het hele boek te PGN-en uploaden tolichess, maar ik voelde nog steeds als theinterface was te onhandig…

Stappenplan

  • Zeurt
  • Kop
  • het spel van het Begin van FEN
  • Betere plotten
  • Meer status functies
  • Overige OSs
  • Unit test
  • Advanced usage
  • Styler
  • CRAN
  • Stokvis API
  • Statische borden (puzzels)
  • Glanzend?

Gedragscode

merk op dat het{chess} project wordt vrijgegeven met een ContributorCode ofConduct.By bij uw bijdrage aan dit project gaat u ermee akkoord de voorwaarden ervan na te leven.

Licentie

{chess} is gelicentieerd onder de GPL 3 (of een latere versie op uw verzoek). Check outLICENSE.mdfor de volledige tekst.