Jakie są dobre zasoby do pisania silnika szachowego? [Zamknięte]

82

Interesuje mnie napisanie silnika szachowego (głównie jako ćwiczenie edukacyjne) i byłbym zainteresowany wszelkimi zasobami, o których ludzie wiedzą, które mogą być interesujące lub z których mogą korzystać, tak naprawdę: artykuły, książki, teoria, samouczki, wszystko, co mogłoby przydatny.

Paul Wicks
źródło

Odpowiedzi:

123

Z moich archiwów:

RoadWarrior
źródło
5
Chess Programming Wiki jest całkiem fajna.
Paul Wicks
Dzięki, dziadku - link naprawiony.
HTTP 410
Drugie łącze jest ponownie wyłączone.
Imon
1
@Imon, drugi link działa dla mnie.
HTTP 410
31

Tworząc swój silnik szachowy spędziłem miesiące, próbując zebrać dobre zasoby, które opisują niektóre z trudniejszych aspektów tworzenia gry w szachy. Oto lista tych, które uznałem za najbardziej przydatne:

Programowanie w szachy - François Dominic Laramée

To jest artykuł, który wprowadził mnie w szachy komputerowe. To świetny przegląd tego, jak komputery grają w szachy. Jest niezwykle łatwy do odczytania i zapozna Cię ze wszystkimi terminami i słowami kluczowymi.

http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/chess-programming-part-i-getting-started-r1014

Komputerowe szachy wiki , rozwinęło się to naprawdę w ciągu ostatnich kilku miesięcy. Jest to doskonałe źródło materiałów referencyjnych.

https://www.chessprogramming.org/Main_Page

Komputerowe linki szachowe Louisa Kesslera

Po przejrzeniu powyższych zasobów, pozostałe można znaleźć na następującej stronie z linkami.

http://www.lkessler.com/cclinks.shtml

Wreszcie, piszę blog komputerowy szachowy, który przeprowadzi Cię przez wszystkie etapy pisania silnika szachowego w C # od zera, zawiera sekcję linków komputerowych i zestaw startowy do gry w szachy.

http://www.chessbin.com

Adam Berent

Adam Berent
źródło
1

Dzieje się tak zasadniczo w dziedzinie sztucznej inteligencji (AI).

Najczęstszym sposobem zmuszenia komputera do „myślenia” w grze w szachy jest użycie metody mini-max, w której komputer „myśli” analizując wyniki wykonywania różnych ruchów z wyprzedzeniem w stosunku do obecnego stanu.

„Dobroć” wyników różnych ruchów może być określona na podstawie wielu kryteriów, takich jak np. Wynik, liczba pozostałych wrogów, stan zwycięstwa. Na przykład, jeśli przesuniesz gracza w prawo i wygrasz grę, to jest to bardzo dobry stan. Ale jeśli przesuniesz go w lewo, nic nie dostaniesz. Rozsądnie jest przejść w prawo. Ta funkcja definiująca „dobroć” jest zwykle nazywana funkcją heurystyczną.

Ten proces jest wykonywany rekurencyjnie przez wiele tur. Im większa liczba zwojów, tym więcej czasu będziesz potrzebować. Im większa liczba zwojów, tym inteligentniejsze jest oprogramowanie. Myślenie z wyprzedzeniem w jednej turze może skutkować tylko chciwym wyborem. Inteligentne oprogramowanie szachowe ma świetne funkcje heurystyczne i pozwala na myślenie naprzód na wiele tur.

ps. Istnieje kilka szczegółów algorytmu mini-max, których tutaj nie wyjaśniłem, ale powinno to obejmować podstawową ideę.

Gant
źródło
1

Dołączyłem do tej samej ligi, co Paul Wicks (powyżej), ja też chcę napisać silnik szachowy dla własnego dobra uczenia się, jedynym ograniczeniem jest moja codzienna praca (czyli praca nad nudnymi usługami internetowymi itp.) ból.

Postanowiłem zbudować go metodą warstwa po warstwie. Już prawie skończyłem z częścią dla wielu graczy, tj. (CZŁOWIEK vs CZŁOWIEK).

Gdy skończę z tym, chciałbym włączyć warstwę AI do obsługi schematu gry (KOMPUTER vs CZŁOWIEK). To jest ta część, o którą najbardziej się martwię, znalazłem tutaj bardzo przydatne wskazówki w tym wątku, wielkie dzięki dla was wszystkich.

Obecnie językiem, z którym dobrze się znam, jest Java, na wypadek gdyby spadła wydajność, mogę go przenieść na C ++.

sij
źródło