Articles

o cursor / xadrez

CRAN estadoCodecov de cobertura de testeR compilação de estadoCiclo de vida: maturação

Descrição

{chess} é um teimoso wrapper para R aroundpython-xadrez, um amazinglibrary criado por Niklas Fiekas. Itallows users to read and writePGN files as well as create and explore game trees such as the ones seen in chessbooks.

Instalação

Instalar a versão de lançamento do {chess} a partir de CRAN:

install.packages("chess")

Ou instalar a versão de desenvolvimento a partir do GitHub com:

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

Este deve ser automaticamente instalar o python-xadrez para o {reticulate}ambiente, mas você também pode explicitamente fazê-lo com um convenientfunction:

chess::install_chess()

Exemplo

Para ler a um jogo existente, basta usar read_game(). Para explorá-lo pode usar forward()back(), bem como variations()variation() tosee todas as variações listadas para o próximo passo e escolher um deles.

muitos outros jogos estão incluídos com o pacote para que você possa levantar andrunning assim que você instalar {chess}! Ver vignette("games") formore information.

Pode também criar o seu próprio jogo com game() e adicionar variações a ele: a função move() adiciona movimentos, bem como ramifica a árvore do jogo. Strings are converted to simple moves, while list()s behaveexactly as parêntesis in PGN, creating a variation of the last move.Aqui você pode ver como recriar um estudioso e algumas maneiras de evitá-lo:

# 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

Note que existem muitas maneiras de estruturar a entrada para move(). Ver para mais informações.

{chess} também apresenta muitas maneiras de ver tanto o jogo como um todo e Tabuleiro em um ponto específico no 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)

Motivação

python-xadrez serviu como inspiração (e espinha dorsal) de {chess}.While the original version (and{rchess} for that matter) broadlyhandles “move generation, move validation” (with powerful classes andobject-oriented syntax), {chess} focks on making it easy to createand explore PGNs as trees.ao estreitar o âmbito da API, acredito que o pacote se torna mais intuitivo para as pessoas que apenas querem rapidamente criar gameanalises compartilháveis ou explorar facilmente os jogos de outras pessoas sem ter que recorrer ao software para apontar e clicar.

{chess}‘s first use was help me study Bobby Fischer’s my 60Memorable Games. Depois de alguns muito difficultparsing,eu era capaz de converter todo o livro de PGN e enviá-lo tolichess, mas eu ainda me sentia como theinterface era muito desajeitado…

Roteiro

  • NAGs
  • Cabeçalhos
  • Inicie o jogo a partir do FEN
  • Melhor plotagem
  • Mais status funções
  • Outros OSs
  • testes de Unidade
  • Avançadas de uso
  • Artista
  • CRAN
  • Bacalhau API
  • Static placas (quebra-cabeças)
  • Brilhante?

código de Conduta

Por Favor note que o{chess} projecto é lançado com um código de Contribuição ofConduct.By contribuindo para este projeto, você concorda em cumprir os seus termos.

License

{chess} is licensed under the GPL 3 (or any later version at youroption). Olha o outLICENSE.mdfor texto completo.