Articles

curso-r / Shakki

CRAN statusCodecov testipeittoR build statusLifecycle: erääntyvä

overview

{chess} on Niklas fiekasin luoma R aroundpython-shakin huikea kääre. Sen avulla käyttäjät voivat lukea ja kirjoittaa GGN-tiedostoja sekä luoda ja tutkia pelipuita, kuten chessbookissa nähtyjä.

asennus

Asenna {chess} cranista:

install.packages("chess")

tai asenna kehitysversio Githubista:

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

tämän pitäisi asentaa Python-Shakki automaattisesti {reticulate}ympäristö, mutta voit tehdä sen myös eksplisiittisesti kätevällä toiminnolla:

chess::install_chess()

esimerkki

Jos haluat lukea olemassa olevan pelin, käytä vain read_game(). Sen tutkimiseen voi käyttää forward()back(), sekä variations()variation() Katso kaikki seuraavassa siirrossa luetellut muunnelmat ja valitse niistä yksi.

monet muut pelit sisältyvät pakettiin, joten voit nousta andrunningiin heti kun asennat {chess}! Katso vignette("games") formore information.

voit myös luoda oman pelisi game() ja lisätä muunnelmia peliin: move() funktio lisää liikkeitä sekä haarautuu pelin puun. Merkkijonot muunnetaan yksinkertaisiksi siirroiksi, kun taas list()s käyttäytyy sulkeena PGN: ssä, jolloin syntyy variaatio viimeisestä siirrosta.Tästä näet, miten tutkijan olemus voidaan luoda uudelleen ja miten sitä voidaan hyödyntää:

# 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

huomaa, että on monia tapoja jäsentää tulomove(). Katso lisätietojavignette("chess").

{chess} sisältää myös monia tapoja nähdä sekä peli kokonaisuutena että pelilauta tiettynä ajankohtana.

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

Motivaatio

python-Shakki toimi inspiraationa (ja selkärankana) {chess}.Vaikka alkuperäinen versio (ja{rchess} itse asiassa) käsittelee laajemmin ”move generation, move validation” (tehokkailla luokilla ja object-oriented syntaksilla), {chess} keskittyy helpottamaan PGN: ien luomista ja tutkimista puina.

rajaamalla API: n soveltamisalaa, uskon paketin muuttuvan intuitiivisemmaksi ihmisille, jotka haluavat vain luoda nopeasti jaettavia gameanalyseja tai tutkia helposti muiden pelejä ilman, että heidän tarvitsee resortoida point and click-ohjelmistoa.

{chess}’s first use was helping me study Bobby Fischer’ s My 60memorable Games. Joidenkin hyvin vaikeuksien jälkeen sain muutettua koko kirjan PGN: ksi ja ladattua sen tolichessiksi,mutta silti koin, että interface oli liian kömpelö…

tiekartta

  • NAGs
  • Aloituspeli FENISTÄ

  • parempi piirtäminen
  • lisää tilafunktioita muut OSs yksikkötestit li> advanced usage

  • styler
  • cran
  • Stockfish API
  • staattiset laudat (palapelit)
  • kiiltävä?

Code of Conduct

huomaa, että {chess} projekti on julkaistu Contributorcodella ofConduct.By osallistumalla tähän projektiin sitoudut noudattamaan sen ehtoja.

lisenssi

{chess} on lisensoitu GPL 3: n (tai minkä tahansa myöhemmän version youroption) nojalla. Check outLICENSE.mdfor koko teksti.