Was sind einige gute Ressourcen zum Schreiben einer Schachmaschine? [geschlossen]

79

Ich bin daran interessiert, eine Schach-Engine zu schreiben (meistens als Lernübung) und würde mich für alle Ressourcen interessieren, von denen die Leute wissen, dass sie von Interesse oder Nutzen sind, alles wirklich: Papiere, Bücher, Theorie, Tutorials, alles, was sein könnte nützlich.

Paul Wicks
quelle

Antworten:

119

Aus meinen Archiven:

RoadWarrior
quelle
4
Das Schachprogrammier-Wiki ist ziemlich cool.
Paul Wicks
Danke, Opa - Link jetzt behoben.
HTTP 410
Der zweite Link ist wieder ausgefallen.
Imon
1
@Imon, der zweite Link funktioniert für mich.
HTTP 410
30

Bei der Erstellung meiner Schach-Engine habe ich monatelang versucht, gute Ressourcen zu sammeln, die einige der schwierigeren Aspekte beim Erstellen eines Schachspiels beschreiben. Hier ist eine Liste derjenigen, die ich am nützlichsten fand:

Schachprogrammierung von François Dominic Laramée

Dies ist der Artikel, der mich zum Computerschach gebracht hat. Es ist ein großartiger Überblick darüber, wie Computer Schach spielen. Es ist sehr einfach zu lesen und führt Sie in alle Begriffe und Schlüsselwörter ein.

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

Computerschach-Wiki , das hat sich in den letzten Monaten wirklich erweitert. Es ist eine ausgezeichnete Quelle für Referenzmaterial.

https://www.chessprogramming.org/Main_Page

Louis Kesslers Computerschach-Links

Sobald Sie die oben genannten Ressourcen durchgearbeitet haben, finden Sie den Rest auf der folgenden Linkseite.

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

Zu guter Letzt schreibe ich einen Computer-Schach-Blog , der Sie durch alle Schritte des Schreibens einer Schach-Engine in C # von Grund auf führt. Er enthält einen Abschnitt mit Computer-Schach-Links und ein Starter-Kit für Schachspiele.

http://www.chessbin.com

Adam Berent

Adam Berent
quelle
Ich muss dich definitiv dafür stimmen!
lkessler
9

Ein Überblick über viele im Schach nützliche Algorithmen - http://www.frayn.net/beowulf/theory.html - sollte ein guter Ausgangspunkt sein, um das Maß des Problems zu verstehen und verschiedene Möglichkeiten zur Vereinfachung der Rechenarbeit.

-Adam

Adam Davis
quelle
4

Sie können jederzeit einen Blick auf den GNU-Schachcode werfen.

Eduard - Gabriel Munteanu
quelle
4

Claude Shannons Artikel von 1949 (Warnung: PDF) zu diesem Thema ist ein guter Ausgangspunkt

barrowc
quelle
2

Das beste Schachprogrammier-Tutorial für Anfänger ist bei GameDev . Es ist sehr leicht zu verstehen, während es sehr detailliert ist.

Niyaz
quelle
1

Dies liegt im Wesentlichen im Bereich der künstlichen Intelligenz (KI).

Die gebräuchlichste Methode, um einen Computer im Schachspiel zum "Denken" zu bringen, ist die Mini-Max-Methode, bei der der Computer "denkt", indem er die Ergebnisse analysiert, die sich aus dem vorherigen Status ergeben.

Die "Güte" der Ergebnisse aus verschiedenen Zügen kann anhand vieler Kriterien bestimmt werden, wie z. B. Punktzahl, Anzahl der verbleibenden Feinde, Gewinnstatus. Wenn Sie beispielsweise den Spieler nach rechts bewegen und das Spiel gewinnen, ist dies ein sehr guter Zustand. Aber wenn Sie es nach links bewegen, erhalten Sie nichts. Es ist vernünftig, nach rechts zu gehen. Diese Funktion, die "Güte" definiert, wird üblicherweise als heuristische Funktion bezeichnet.

Dieser Vorgang wird für viele Umdrehungen rekursiv durchgeführt. Je mehr Umdrehungen Sie machen, desto mehr Zeit benötigen Sie. Und je mehr Umdrehungen, desto intelligenter ist Ihre Software. Vorausdenken in nur einer Runde kann nur zu gieriger Auswahl führen. Intelligente Schach-Software hat eine großartige heuristische Funktion und denkt in vielen Schritten voraus.

ps. Es gibt einige Details des Mini-Max-Algorithmus, die ich hier nicht erklärt habe, aber dies sollte die Grundidee abdecken.

Gant
quelle
1

Ich bin der gleichen Liga von Paul Wicks (oben) beigetreten. Ich möchte auch eine Schach-Engine schreiben, um mein eigenes Lernen zu fördern. Die einzige Einschränkung ist mein Tagesjob (der darin besteht, an langweiligen Webdiensten und anderen Dingen zu arbeiten.), Aber es lohnt sich der Schmerz.

Ich beschloss, es Schicht für Schicht zu erstellen. Ich bin fast fertig mit dem Multiplayer-Teil, dh (HUMAN vs HUMAN).

Sobald ich damit fertig bin, würde ich gerne die KI-Ebene integrieren, um das Spielschema (COMPUTER vs HUMAN) zu unterstützen. Dies ist der Teil, über den ich mir am meisten Sorgen mache. Ich habe hier in diesem Thread sehr nette Hilfetipps gefunden. Ein großes Dankeschön an euch alle.

Derzeit ist Java die Sprache, mit der ich mich gut auskenne. Falls es zu Leistungseinbußen kommt, kann ich sie nach C ++ portieren.

sij
quelle