curso-r / chess
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.