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


Jestem zainteresowany pisaniem silnika szachowego (głównie jako ćwiczeniem do nauki) i byłbym zainteresowany wszelkimi zasobami, które ludzie o nim wiedzą mogą być interesujące lub użyteczne, wszystko, co naprawdę: dokumenty, książki, teoria, tutoriale, wszystko, co może być przydatny.


76
2018-01-30 06:56


pochodzenie


frayn.net/beowulf/theory.html - SmallChess


Odpowiedzi:


Z moich archiwów:


101
2018-04-14 19:42



The Chess Programming Wiki jest całkiem fajna. - Paul Wicks
Drugi link jest teraz: archive.gamedev.net/reference/programming/features/chess1 - Grandpa
Dzięki, dziadku - link został naprawiony. - RoadWarrior
Drugi link jest ponownie wyłączony. - Imon
@Imon, drugi link działa dla mnie. - RoadWarrior


Podczas tworzenia mojego silnika szachowego 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 najbardziej użytecznych:

Programowanie w szachy autorstwa François Dominic Laramée

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

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

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

http://chessprogramming.wikispaces.com/

Komputerowe szachy Louisa Kesslera

Po przejściu przez powyższe zasoby pozostałą część można znaleźć na następującej stronie linków.

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

Na koniec piszę a Komputerowy blog szachowy który prowadzi przez wszystkie etapy pisania silnika szachy w C # od zera, zawiera sekcję gry w szachy komputerowe i zestaw startowy do gry w szachy.

http://www.chessbin.com

Adam Berent


27
2018-01-30 07:13



Zdecydowanie muszę wam to pokazać! - lkessler


Przegląd wielu algorytmów przydatnych w szachach - http://www.frayn.net/beowulf/theory.html- powinien stanowić dobry punkt wyjścia do zrozumienia miary problemu i kilku sposobów uproszczenia pracy obliczeniowej.

-Adam


9
2018-01-30 07:25





Zawsze możesz rzucić okiem GNU Chess kod.


4
2018-01-31 21:33





Claude Shannon's 1949 papier (ostrzeżenie: PDF) na ten temat to dobre miejsce początkowe


3
2018-02-01 09:18





Najlepszy tutorial do programowania szachowego dla początkujących jest dostępny GameDev. Jest bardzo łatwy do zrozumienia, a jednocześnie bardzo szczegółowo.


2
2018-01-30 07:16





Jest to zasadniczo w dziedzinie Sztuczna inteligencja (AI).

Najpopularniejszym sposobem "myślenia" komputera w grze w szachy jest użycie Metoda mini-max gdzie komputer "myśli", analizując wyniki przed wykonaniem różnych ruchów z bieżącego stanu.

"Dobro" wyników z różnych ruchów można określić na podstawie wielu kryteriów, takich jak wynik, liczba pozostawionych wrogów, stan wygranej, na przykład. Na przykład, jeśli przesuwasz odtwarzacz w prawo i wygrywasz, jest to bardzo dobry stan. Ale jeśli przesuniesz go w lewo, nic nie dostaniesz. Rozsądne jest poruszanie się w prawo. Ta funkcja definiująca "dobro" jest zwykle wywoływana Funkcja heurystyczna. 

Ten proces odbywa się rekursywnie przez wiele zwojów. Im większa liczba obrotów, tym więcej czasu będziesz potrzebować. Im większa liczba obrotów, tym bardziej inteligentne jest twoje oprogramowanie. Myślenie naprzód tylko w jednej turze może tylko spowodować chciwą selekcję. Inteligentne oprogramowanie do gry w szachy ma wielką funkcję heurystyczną i potrafi myśleć naprzód w wielu turach.

ps. Są pewne szczegóły algorytmu mini-max, których tutaj nie wyjaśniałem, ale powinno to dotyczyć podstawowej idei.


1
2018-05-08 19:18





Dołączyłem do tej samej ligi Paula Wicksa (powyżej), ja też chcę napisać silnik szachowy dla mojego własnego sake, tylko przymus jest moją codzienną pracą (która ma pracować z nudnymi usługami sieciowymi itp.), Ale jest warta ból.

Postanowiłem go zbudować, stosując podejście "warstwa po warstwie". Już prawie skończyłem z częścią dla wielu graczy, tj. (LUDZIE vs LUDZI).

Kiedy już skończę, chciałbym włączyć warstwę AI do obsługi schematu gry (COMPUTER vs HUMAN). Jest to część, o którą najbardziej martwię się, znalazłem tutaj bardzo miłe wskazówki pomocy w tym wątku, wielkie podziękowania dla was wszystkich.

Obecnie językiem, który znam dobrze, jest Java, na wypadek, gdyby nastąpiło uderzenie wydajności wtedy mogę przenieść go do C ++.


1