Articles

curso-r / chess

CRAN statusCodecov test dekningr bygge statuslivssyklus: modning

oversikt

{chess} er en opinionated wrapper for r aroundpython-chess, en amazinglibrary Skapt Av Niklas fiekas. Itallows brukere å lese og writePGN filer samt lage og utforske spillet trær som de sett i sjakkbøker.

Installasjon

Installer den utgitte versjonen av {chess} FRA CRAN:

install.packages("chess")

eller installer utviklingsversjonen Fra GitHub med:

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

dette skal automatisk installere python-Sjakk til {reticulate}miljø, MEN du kan også eksplisitt gjøre det med en convenientfunction:

chess::install_chess()

eksempel

for å lese et eksisterende spill, bruk bare read_game(). For å utforske det kan du bruke forward()back(), samt variations()variation() tilse alle variasjoner oppført for neste trekk og velg en av dem.

Mange andre spill er inkludert i pakken, slik at du kan komme opp og løpe så snart du installerer {chess}! Sevignette("games") mer informasjon.

Du kan også lage ditt eget spill med game() og legge til variasjoner toit: move() funksjonen legger til trekk samt grener treet til spillet. Strenger konverteres til enkle trekk, mens list()s oppfører seg nøyaktig som parentes I PGN, noe som skaper en variant av det siste trekket.Her kan du se hvordan du kan gjenskape En Scholar ‘ smate og noen måter åunngå 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

Merk at det er Mange måter å strukturere inngangen til move(). Sevignette("chess") for mer informasjon.

{chess} har også mange måter å se både spillet som helhet andthe styret 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)

Motivasjon

python-sjakk fungerte som inspirasjon (og ryggrad) for{chess}.Mens den opprinnelige versjonen (og{rchess} for den saks skyld) håndterer bredt «flytt generasjon, flytt validering» (med kraftige klasser og objektorientert syntaks), {chess} fokuserer på å gjøre det enkelt å oppretteog utforske PGNs som trær.Ved å begrense omfanget AV API, tror jeg at pakken blir mer intuitiv for folk som bare vil raskt lage delbare gameanalyser eller enkelt utforske andres spill uten å måtte ty til å peke og klikke programvare.

{chess} ‘ s første bruk hjalp meg med å studere Bobby Fischers My 60memorable Games. Etter noen svært difficultparsing,var Jeg i stand til å konvertere hele boken TIL PGN og laste den opp tolichess, men jeg fortsatt følte at grensesnittet var for klønete…

Veikart

  • NAGs
  • Headers
  • Start spillet FRA FEN
  • bedre plotting
  • flere statusfunksjoner
  • Andre Oss
  • Enhet tester
  • avansert bruk
  • styler
  • cran
  • tørrfisk api
  • statiske boards (puslespill)
  • skinnende?

Code of Conduct

Vær oppmerksom på at{chess} prosjektet er utgitt Med En Bidragskode ofConduct.By ved å bidra til dette prosjektet, godtar du å overholde vilkårene.

Lisens

{chess} er lisensiert under GPL 3 (eller en senere versjon hos youroption). Sjekk outLICENSE.mdfor hele teksten.