curso-r / chess
Visión general
{chess}
es un envoltorio de opinión para R aroundpython-chess, una biblioteca asombrosa creada por Niklas Fiekas. Permite a los usuarios leer y escribir archivos, así como crear y explorar árboles de juegos como los que se ven en los libros de ajedrez.
Instalación
Instalar la versión de lanzamiento de {chess}
de CRAN:
install.packages("chess")
O instalar la versión de desarrollo de GitHub con:
# install.packages("remotes")remotes::install_github("curso-r/chess")
Esto debería instalar automáticamente python-ajedrez a su {reticulate}
medio ambiente, pero también puede explícitamente hacerlo con un convenientfunction:
chess::install_chess()
Ejemplo
la lectura De un juego ya existente, simplemente use read_game()
. Para explorar que se pueden usar forward()
back()
, así como variations()
variation()
tosee todas las variaciones mencionadas para el siguiente movimiento y elegir uno de ellos.
Muchos otros juegos se incluyen con el paquete, por lo que puede ponerse en marcha tan pronto como instale {chess}
! Consulte vignette("games")
para obtener más información.
También puedes crear tu propio juego con game()
y añadir variaciones a esto: la función move()
añade movimientos y ramifica el árbol del juego. Las cadenas se convierten en movimientos simples, mientras que list()
s se comportan exactamente como paréntesis en PGN, creando una variación del último movimiento.Aquí puede ver cómo recrear el compañero de un estudiante y algunas formas de evitarlo:
# 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
Tenga en cuenta que hay muchas formas de estructurar la entrada a move()
. Consultevignette("chess")
para obtener más información.
{chess}
también presenta muchas formas de ver el juego en su conjunto y el tablero en un momento específico.
# 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)
la Motivación
python-ajedrez sirvió de inspiración (y la columna vertebral) para {chess}
.Mientras que la versión original (y{rchess}
para el caso) maneja ampliamente «generación de movimientos, validación de movimientos»(con clases poderosas y sintaxis orientada a objetos), {chess}
se enfoca en hacer que sea fácil crear y explorar PGN como árboles.
Al reducir el alcance de la API, creo que el paquete se vuelve más intuitivo para las personas que solo desean crear análisis de juegos que se puedan compartir rápidamente o explorar fácilmente los juegos de otras personas sin tener que volver a apuntar y hacer clic en el software.
{chess}
el primer uso fue ayudarme a estudiar Mis 60 juegos memorables de Bobby Fischer. Después de un análisis muy difícil,pude convertir todo el libro a PGN y cargarlo sin problemas, pero aún así sentí que la interfaz era demasiado torpe Start
Hoja de ruta
- NAGs
- Encabezados
- Iniciar el juego desde FEN
- Mejor trazado
- Más funciones de estado
- Otros OSs
- Pruebas unitarias
- Uso avanzado
- Styler
- CRAN
- Stockfish API
- Tableros estáticos (rompecabezas)
- ¿Brillante?
Código de Conducta
Tenga en cuenta que el proyecto {chess}
se publica con un código de contribución ofConduct.By al contribuir a este proyecto, usted acepta cumplir con sus términos.
License
{chess}
está licenciado bajo la GPL 3 (o cualquier versión posterior en youroption). Echa un vistazo a la licencia.md para el texto completo.