Articles

curso-r / chess

status CRANpokrycie testowe Codecovstatus r buildcykl życia: dojrzewanie

przegląd

{chess} to opinionated wrapper for R around-Chess, niesamowita biblioteka stworzona przez Niklasa fiekasa. Umożliwia użytkownikom odczytywanie i zapisywanie plików, a także tworzenie i eksplorowanie drzew gier, takich jak te widoczne w szachownicach.

instalacja

zainstaluj wydaną wersję {chess} z CRAN:

install.packages("chess")

lub zainstaluj wersję deweloperską z GitHub za pomocą:

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

to powinno automatycznie zainstalować Python-Chess do twojego {reticulate}środowiska, ale możesz to wyraźnie zrobić za pomocą wygodnej funkcji:

chess::install_chess()

przykład

aby odczytać istniejącą grę, po prostu użyj read_game(). Aby go zbadać, możesz użyć forward()back(), a także variations()variation(), aby zobaczyć wszystkie warianty wymienione dla następnego ruchu i wybrać jedną z nich.

wiele innych gier jest dołączonych do pakietu, dzięki czemu możesz wstać i rozpocząć grę od razu po zainstalowaniu {chess}! Zobaczvignette("games") więcej informacji.

Możesz również stworzyć własną grę za pomocągame() I dodać do niej wariacje: funkcjamove() dodaje ruchy, a także rozgałęzienia drzewa gry. Ciągi są konwertowane do prostych ruchów, podczas gdy list()s zachowuje się jako nawias w PGN, tworząc odmianę ostatniego ruchu.Tutaj możesz zobaczyć, jak odtworzyć kolegę uczonego i kilka sposobów, aby go uniknąć:

# 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

zauważ, że istnieje wiele sposobów na uporządkowanie danych wejściowych domove(). Więcej informacji można znaleźć wvignette("chess").

{chess} oferuje również wiele sposobów postrzegania zarówno gry jako całości, jak i planszy w określonym momencie.

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

motywacja

python-szachy służyły jako inspiracja (i szkielet) dla{chess}.Podczas gdy oryginalna wersja (I{rchess} dla tego znaczenia) szeroko obsługuje „move generation, move validation” (z potężnymi klasami i składnią zorientowaną na obiekt), {chess} koncentruje się na ułatwianiu tworzenia i eksplorowania PGN jako drzew.

zawężając zakres API, uważam, że pakiet staje się bardziej intuicyjny dla osób, które chcą szybko tworzyć udostępniane modele gier lub łatwo eksplorować gry innych osób bez konieczności uciekania się do oprogramowania wskaż i kliknij.

{chess} 's pierwszy raz pomógł mi studiować moje 60memorable gry Bobby’ ego Fischera. Po pewnym bardzo trudnym przygotowaniu udało mi się przekonwertować całą książkę na PGN i wgrać ją do PGN,ale nadal czułem, że interfejs jest zbyt niezdarny…

Mapa Drogowa

  • nagłówki
  • Uruchom grę z FEN
  • lepsze wykresy
  • Więcej funkcji statusowych
  • Inne OSs
  • testy jednostkowe
  • zaawansowane użycie
  • Styler
  • Cran
  • Stockfish API
  • tablice statyczne (łamigłówki)
  • błyszczące?

Kodeks Postępowania

należy pamiętać ,że projekt{chess} został wydany z kodem źródłowym ofConduct.By przyczyniając się do tego projektu, zgadzasz się przestrzegać jego warunków.

Licencja

{chess} jest licencjonowana na licencji GPL 3 (lub dowolnej późniejszej wersji na youroption). Sprawdź outLICENSE.mddla pełnego tekstu.