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.
82
Odpowiedzi:
Z moich archiwów:
źródło
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
źródło
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ę.
źródło
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 ++.
źródło