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.
79
Antworten:
Aus meinen Archiven:
quelle
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
quelle
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
quelle
Sie können jederzeit einen Blick auf den GNU-Schachcode werfen.
quelle
Claude Shannons Artikel von 1949 (Warnung: PDF) zu diesem Thema ist ein guter Ausgangspunkt
quelle
Das beste Schachprogrammier-Tutorial für Anfänger ist bei GameDev . Es ist sehr leicht zu verstehen, während es sehr detailliert ist.
quelle
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.
quelle
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.
quelle