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.


Antworten:


119

Aus meinen Archiven:


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


Ich muss dich definitiv dafür stimmen!
lkessler



4

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


2

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


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.