2010-01-13 20 views
30

Gibt es eine Schach-Spiel-API geschrieben rein in JavaScript? Kein Blitz! Kennt jemand den Algorithmus (allgemein) in Schachspielen?Schachspiel in JavaScript

+1

könnte ein guter Code Golf Frage (für eine kurze Implementierung) –

+0

http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html –

+0

Eine erstaunlich geringe Umsetzung (1 kb) sein: http://js1k.com/2010-first/demo/435 – Christophe

Antwort

55

Wie funktioniert ein Schach-Algorithmus Arbeit ?:

Was für ein Schachcomputer zu tun versucht, ist das Board-Position Baum fünf oder 10 oder 20 bewegt sich in die Zukunft generieren. Unter der Annahme, dass es etwa 20 mögliche Züge für jede Plattenposition, ein fünfstufige Baum enthält 3,200,000 Vorstandspositionen. Ein 10-Level-Baum enthält etwa 10.000.000.000.000 (10 Billionen) Positionen. Die Tiefe des Baum, der ein Computer berechnen kann wird durch die Geschwindigkeit der das Spiel Computer gesteuert. Die schnellsten Schachcomputer können generieren und auswerten Millionen von Vorstandspositionen pro Sekunde.

Sobald der Baum generiert wurde, muss der Computer die Position der Karte auswerten. " Das heißt, der Computer an den Figuren auf dem Brett zu suchen hat und entscheiden, ob die Anordnung von Stücken ist „gut“ oder „schlecht“. Die Art, wie es ist, ist dies mit einer Auswertung Funktion. Die einfachste mögliche Funktion könnte nur die Anzahl von Stücken jeder Seite zählen. Wenn die Computer spielen wissen und eine bestimmte Plattenposition hat 11 weiße Stücke und neun schwarze Stücke, die einfachsten könnte Bewertungsfunktion sein:

11 - 9 = 2 

Offensichtlich für Schach, dass Formel viel zu einfach ist, weil einige Stücke wertvoller sind als andere. So könnte die Formel ein Gewicht auf jeden Stücktyp anwenden. Wie der Programmierer darüber nachdenkt, macht er oder sie die Bewertungsfunktion mehr und mehr kompliziert durch Dinge wie Board Position, die Kontrolle über das Zentrum, Verwundbarkeit des Königs Hinzufügen zu überprüfen, Verwundbarkeit der Königin Gegner, und Tonnen anderer Parameter. Keine Unabhängig davon, wie kompliziert die Funktion bekommt, wird es jedoch kondensiert bis eine einzige Zahl, die die „Güte“ der Vorstandsposition darstellt.

Source.

Für Ihre eigenen Javascript ‚Motor‘ bauen, die Schach auf einer grundlegenden Ebene Check Step by Step Javascript Chess with CPU oppo

spielen kann ist, wenn Sie es nach unten scrollen enthält den Quellcode dieser muss sehr begrenzt sagen, Schach-Engine auf Javascript rein basierend . Es hat auch eine funktionierende Version des Spiels zum ausprobieren und alle notwendigen Ressourcen für den Aufbau Ihres eigenen.

einige nützliche Ressourcen:

1

Die Computer Chess Blog dokumentiert die Schaffung eines C# Schach-Engine, die Theorie hinter der Beschreibung Schach AI Algorithmen gefunden habe. Es ist kein JavaScript, aber die Syntax ist ähnlich genug, um die verschiedenen Komponenten der Schach-Engine gut zu verstehen.

Auch wenn Sie möchten, dass Ihre Schach-Engine webfähig ist, sollten Sie C# mit einer Silverlight-GUI verwenden. Sie erhalten eine bessere Leistung von .NET als mit JavaScript. Wie Sie sehen werden, wird dies zu einem stärkeren (tiefer gehenden) Schachprogramm führen. Ein gutes Beispiel für Silverlight Chess finden Sie unter

5

Für algorithmische Diskussion, versuchen Sie die Chess Programming Wiki.

Techniken, die für ernsthafte Schach-Engines geeignet sind, sind nicht unbedingt richtig für webbasierte Spiele. Echte Schach-Engines laufen um Größenordnungen schneller, verwenden Multi-Megabyte-Eröffnungsbücher und verbringen Minuten oder Stunden pro Runde. Eine echte Schach-Engine wird tiefer als 12 Lagen suchen, während JavaScript in einer vernünftigen Web-Zeit nicht weit über 6 Lagen hinausgeht. Daher ist etwas wie eine piece-square oracle, die abnehmende und möglicherweise negative Ergebnisse hat, wenn die Suche vertieft und folglich in der Schachprogrammierung aus der Mode gekommen ist, gut geeignet für eine Javascript-Engine. Wenn Sie das tun, was die Leute in den 80ern gemacht haben, werden Sie mit einer bissigen und überschaubaren Engine enden, die die meisten Besucher schlagen wird.

Und natürlich wollen Sie nicht wirklich nachsehen, was andere Leute machen. Stellen Sie sicher, dass Sie eine Variation von alpha-beta search haben, dann optimieren Sie Ihre Bewertungsfunktion und alles andere, wie Sie es für richtig halten.

In 2002 und 2012 schrieb ich dann umgeschrieben p4wn, eine kleine Public Domain Javascript Engine. Es verwendet Alpha-Beta und ein Stück-Quadrat-Orakel. Es ist wahrscheinlich schwächer als Garbochess-JS, aber dann hat Garbochess ein Eröffnungsbuch, das größer ist als die gesamte p4wn-Engine.

Verwandte Themen