Skip to main content

Lubisz grać w szachy? Podobał ci się chess.com lub lichess? W takim razie pokochasz KoksSzachy! heart

Project description

KoksSzachy

logo-epic-big-daddy-by-smugas-hacker-epic-ok

chess.com pls don't sue us, it's for fun

Jak to działa?

Silnik KoksSzachów działa na bardzo prostej zasadzie:

  • Pobranie pozycji chessboard.js za pomocą wpisywania w url FEN stringów.

  • Rekreacja pozycji w bibliotece python-chess, która umożliwia stworzenie listy możliwych ruchów i wiele innych, które przydadzą się w algorytmie Minimax.

  • Ewaluacja materiału. Działa ona na podstawie zliczania wartości wszystkich bierek na planszy. Wartości te są przedstawione w słowniku values.

  • Ewaluacja pozycji odtworzonej przez wspomnianą wcześniej bibliotekę przy pomocy FEN stringa. Jest ona robiona na podstawie słownika positions.

    • Jak to działa? To bardzo proste - w słowniku dla każdej figury isnieje odpowiadający jej dwuwymiarowy array z liczbami całkowitymi. Array odpowiada prawdziwym rozmiarom szachownicy czyli 8x8. Weźmy dla przykładu array poświęcony gońcowi. Specjalnie zaznaczona została notacja szachowa dla ułatwienia wizualicaji.

      {chess.BISHOP: [
        -50, -40, -30, -30, -30, -30, -40, -50, # 8
        -40, -20, 0, 0, 0, 0, -20, -40,         # 7
        -30, 0, 10, 15, 15, 10, 0, -30,         # 6
        -30, 5, 15, 20, 20, 15, 5, -30,         # 5
        -30, 0, 15, 20, 20, 15, 0, -30,         # 4
        -30, 5, 10, 15, 15, 10, 5, -30,         # 3
        -40, -20, 0, 5, 5, 0, -20, -40,         # 2
        -50, -40, -30, -30, -30, -30, -40, -50, # 1
      #  a    b    c    d    e    f    g    h
      ]}
      

      Łatwo zauważyć, że każdy z narożników szachownicy ma bardzo niskie wartości. To dlatego, że goniec stając na nich traci możliwość poruszania się po dwóch przekątnych tylko do jednej.
      Zagłębiając się w wartości tej czy innych figur można dostrzec wiele innych wariantów.

      Arraye są przedstawione z perspektywy pierwszej osoby.

  • Gdy białe - gracz, wykonają ruch, czarne - czyli komputer analizują pozycje i materiał zapisując obecną wartość ogólną. Po tym procesie uruchamiany jest algorytm Minimax, który analizuje przyszłe i możliwe posunięcia przeciwnika po wykonanym ruchu. W ten sposób algorytm ocenia, który ruch jest dla niego najlepszy. To na ile posunięć do przodu liczy jest kontrolowane przez zmienną depth+1.

  • Obliczone ruchy są zapisywane w odpowiedniej kolejności

  • Komputer wybiera pierwszy ruch z listy i go wykonuje.

  • Wszystko działa dopóki są możliwe ruchy. Nie działa to na podstawie pętli.

Minimax

Minimax w KoksSzachach jest zooptymlizowany poprzez alpha-beta pruning oraz iterative deepening.

Ciekawe artykuły i źródła na temat tych algorytmów:

Instalacja

Jak zagrać?

Do odpalenia KoksSzachów potrzeba bibliotek zawartych w pliku requirements.txt

git clone https://github.com/a1eaiactaest/KoksSzachy.git

cd KoksSzachy

# UNIX
pip3 install -r requirements.txt

./play.py 

# Windows
pip install -r requirements.txt

python play.py


# webserver na localhost:5000 (127.0.0.1:5000)

TODO

  • Narysować boarda na stronie.
  • Podpiąć chessboardjs pod python-chessa.
  • Bardzo podstawowe działanie takie jak ograniczenie tylko do legalnych ruchów.
  • Troche bardziej rozwinięte działanie.
    • Promocja
    • En passant
    • Roszada
  • Ewaluacja dla poszczególnych bierek.
  • Minimax
    • Alpha-beta
  • Javascriptowe funkcje
    • takeBack()
      • implementacja
      • guziczek
    • newGame()
      • implementacja
      • guziczek
  • Ktoś może sportować javascripta z index.html do oddzielnego pliku.
  • Frontend
  • Analysis Button, czyli klikamy zapisujemy notacje PGN i przekierowywyuje nas w new tabie do API Lichessa z możliwością analizy naszej gry na podstawie PGN.
  • Kto wygrywa, aka wartość zbitych pionów z obu stron.
  • favicon i logo jakies do readme
  • wybór promocji, tzn. na jaką figurę chcemy wypromować piona
  • wypisywanie pgn-u do textarea

Zgodność

  • Windows
  • Linux
  • MacOS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

KoksSzachy-0.6.3.tar.gz (223.4 kB view hashes)

Uploaded Source

Built Distribution

KoksSzachy-0.6.3-py3-none-any.whl (4.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page