Articles

curso-r / chess

CRAN statusCodecov test täckningr build statuslivscykel: mognad

översikt

{chess} är en opinionated wrapper för R aroundpython-chess, en amazinglibrary skapad av Niklas fiekas. Itallows användare att läsa och writePGN filer samt skapa och utforska spel träd som de som ses i schackböcker.

Installation

Installera den släppta versionen av {chess} från CRAN:

install.packages("chess")

eller installera utvecklingsversionen från GitHub med:

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

detta bör automatiskt installera Python-Chess till din {reticulate}miljö, men du kan också uttryckligen göra det med en bekvämfunktion:

chess::install_chess()

exempel

för att läsa ett befintligt spel, Använd bara read_game(). För att utforska det kan du använda forward()back(), samt variations()variation() Tose alla variationer listade för nästa drag och välj en av dem.

många andra spel ingår i paketet så att du kan få upp andrunning så fort du installerar {chess}! Se vignette("games") former information.

Du kan också skapa ditt eget spel med game() och lägga till variationer toit: funktionen move() lägger till rörelser och grenar trädet av thegame. Strängar konverteras till enkla drag, medan list()s beter sigexakt som parentes i PGN, vilket skapar en variation av det sista draget.Här kan du se hur man återskapar en Scholar ’ smate och några sätt attundvik 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

Observera att det finns många sätt att strukturera ingången till move(). Sevignette("chess") för mer information.

{chess} har också många sätt att se både spelet som helhet ochstyrelsen vid en viss tidpunkt.

# 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-Schack fungerade som inspiration (och ryggrad) för {chess}.Medan den ursprungliga versionen (och{rchess} för den delen) hanterar ”move generation, move validation” (med kraftfulla klasser och objektorienterad syntax), fokuserar {chess} på att göra det enkelt att skapa och utforska PGNs som träd.

genom att begränsa API: s omfattning tror jag att paketet blir mer intuitivt för människor som bara vill snabbt skapa delbara spelanalyser eller enkelt utforska andras spel utan att behöva tillgripatill peka och klicka på programvara.

{chess}första användningen hjälpte mig att studera Bobby Fischers My 60memorable Games. Efter några mycket svårtparsing kunde jag konvertera hela boken till PGN och ladda upp den tilllichess,men jag kände mig fortfarande som theinterface var för klumpig…

färdplan

  • NAGs
  • rubriker
  • starta spelet från FEN
  • bättre plottning
  • fler statusfunktioner
  • Andra OSs
  • enhetstester
  • avancerad användning
  • styler
  • Cran
  • Stockfish API
  • statiska brädor (pussel)
  • glänsande?

uppförandekod

Observera att {chess} – projektet släpps med en Bidragskod ofConduct.By genom att bidra till detta projekt samtycker du till att följa dess villkor.

licens

{chess} är licensierad under GPL 3 (eller någon senare version på youroption). Kolla outLICENSE.mdfor hela texten.