cursore / scacchi
Descrizione
{chess}
è un supponente wrapper per R aroundpython-scacchi, un amazinglibrary creata da Niklas Fiekas. Itallows agli utenti di leggere e writePGN file aswell come creare ed esplorare alberi di gioco come quelli visti in chessbooks.
Installazione
Installare la versione di {chess}
da CRAN:
install.packages("chess")
O installare la versione in fase di sviluppo da GitHub con:
# install.packages("remotes")remotes::install_github("curso-r/chess")
Questo dovrebbe installare automaticamente python-scacchi per il {reticulate}
ambiente, ma si può anche esplicitamente di farlo con un convenientfunction:
chess::install_chess()
Esempio
Per leggere un gioco esistente, semplicemente usare read_game()
. Per esplorarlo puoi usare forward()
back()
, così come variations()
variation()
per vedere tutte le varianti elencate per la prossima mossa e sceglierne una.
Molti altri giochi sono inclusi nel pacchetto in modo da poter alzarsi andunning non appena si installa {chess}
! Vederevignette("games")
per maggiori informazioni.
Puoi anche creare il tuo gioco con game()
e aggiungere variazioni a questo: la funzione move()
aggiunge mosse e ramifica l’albero del gioco. Le stringhe vengono convertite in mosse semplici, mentre list()
si comportano esattamente come parentesi in PGN, creando una variazione dell’ultima mossa.Qui puoi vedere come ricreare la data di uno studioso e alcuni modi per evitarla:
# 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
Nota che ci sono molti modi per strutturare l’input inmove()
. Vederevignette("chess")
per ulteriori informazioni.
{chess}
presenta anche molti modi di vedere sia il gioco nel suo complesso che la scheda in un punto specifico nel tempo.
# 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)
Motivazione
python-chess è stato l’ispirazione (e la spina dorsale) per {chess}
.Mentre la versione originale (e{rchess}
del resto) gestisce ampiamente “move generation, move validation” (con classi potenti andobject-oriented syntax),{chess}
si concentra sul rendere facile la creazione e l’esplorazione di PGN come alberi.
Restringendo l’ambito dell’API, credo che il pacchetto diventi più intuitivo per le persone che vogliono solo creare rapidamente analisi di gioco condivisibili o esplorare facilmente i giochi di altre persone senza dover ricorrere al software punta e clicca.
{chess}
mi ha aiutato a studiare i miei giochi 60Memorable di Bobby Fischer. Dopo alcuni molto difficultparsing,sono stato in grado di convertire l’intero libro in formato PGN e caricarlo tolichess, ma mi sentivo ancora come theinterface era troppo goffo…
tabella di marcia
- NAGs
- Header
- Avviare il gioco da FEN
- Meglio tramando
- Più le funzioni di stato
- Altri sistemi operativi
- Unit test
- utilizzo Avanzato
- Styler
- ANALISI
- Stoccafisso API
- pannelli Statici (puzzle)
- Shiny?
Codice di condotta
Si prega di notare che il progetto{chess}
viene rilasciato con un ContributorCode ofConduct.By contribuendo a questo progetto, l’utente accetta di rispettare i suoi termini.
Licenza
{chess}
è rilasciato sotto la GPL 3 (o qualsiasi versione successiva a youroption). Controlla outLICENSE.mdper il testo completo.