Articles

curso-r / chess

CRAN statusCodecov testdækningR build statuslivscyklus: modning

oversigt

{chess} er en meningsfuld indpakning til R aroundpython-chess, en fantastiskbibliotek oprettet af Niklas fiekas. Det giver brugerne mulighed for at læse og skrivepgn-filer samt oprette og udforske spiltræer som dem, der ses i skakbøger.

Installation

Installer den udgivne version af {chess} fra CRAN:

install.packages("chess")

eller installer udviklingsversionen fra GitHub med:

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

dette skal automatisk installere Python-chess til din {reticulate}miljø, men du kan også eksplicit gøre det med en bekvemmefunktion:

chess::install_chess()

eksempel

for at læse et eksisterende spil skal du blot bruge read_game(). For at udforske det kan du bruge forward()back(), samt variations()variation() tilse alle variationer, der er angivet til næste træk, og vælg en af dem.

mange andre spil er inkluderet i pakken, så du kan komme op andrunning så snart du installerer {chess}! Se vignette("games") formere information.

Du kan også oprette dit eget spil medgame()og tilføje variationer toit:move() funktion tilføjer bevægelser samt grene træet Afspil. Strenge konverteres til enkle træk, mens list()S opfører sigpræcis som parentes i PGN, hvilket skaber en variation af det sidste træk.Her kan du se, hvordan du genskaber en Scholar ‘ smate og nogle måder atundgå det:

# 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

Bemærk, at der er mange måder at strukturere input til move(). Sevignette("chess") for mere information.

{chess} indeholder også mange måder at se både spillet som helhed ogbrættet på et bestemt tidspunkt.

# 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-skak tjente som inspiration (og rygrad) til {chess}.Mens den originale version (og{rchess} for den sags skyld) bredt håndterer “Flyt generation, Flyt Validering” (med kraftfulde klasser ogobjektorienteret syntaks), {chess} fokuserer på at gøre det nemt at opretteog udforske PGNs som træer.

Ved at indsnævre API ‘ ens omfang tror jeg, at pakken bliver mere intuitiv for folk, der bare hurtigt vil oprette delbare gameanalyser eller nemt udforske andres spil uden at skulle udvejat pege og klikke på programmer.

{chess}‘s første brug hjalp mig med at studere Bobby Fischer’ s Mine 60memorable spil. Efter nogle meget difficultparsing,jeg var i stand til at konvertere hele bogen til PGN og uploade det tolichess, men jeg stadig følte theinterface var for klodset…

Roadmap

  • Nags
  • Headers
  • Start spil fra FEN
  • bedre plotte
  • flere statusfunktioner
  • Other OSs
  • Unit tests
  • avanceret brug
  • styler
  • Cran
  • Stockfish API
  • statiske tavler (puslespil)
  • skinnende?

adfærdskodeks

Bemærk venligst, at{chess} projektet frigives med en ContributorCode ofConduct.By ved at bidrage til dette projekt accepterer du at overholde dets vilkår.

Licens

{chess} er licenseret under GPL 3 (eller en senere version på youroption). Tjek outLICENSE.MD for den fulde tekst.