Gibt es eine Schach-Spiel-API geschrieben rein in JavaScript? Kein Blitz! Kennt jemand den Algorithmus (allgemein) in Schachspielen?Schachspiel in JavaScript
Antwort
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.
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:
- First implementation of a chess engine in Javascript
- The Anatomy of Chess Programs, von Tony Marsland, ist ein schönes Intro auf, wie aktuelle Schachprogramme arbeiten.
- Chess Space
- Paul Verhelst - Fragen und Antworten
- Bibliography on Minimax Algorithms (newer version).
- Crafty ist ein starkes Programm , dessen Quellcode frei verfügbar ist, und für ein Schachprogramm durchaus lesbar.
- Unfinished Work and Challenges to Chess Programmers
- Is there a perfect algorithm for Chess? Diskussion hier auf so
- How Computers Play Chess Das beste Buch, das ich
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
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.
- 1. Codierungsregeln für das Schachspiel mit endlicher Zustandsmaschine
- 2. Zugriff auf Methoden mit instanziiertem Objekt im Schachspiel
- 3. Serialisierung von Schachspiel Logik nicht erfolgreich nach dem Klicken auf "Spiel speichern" -Taste in Java GUI
- 4. Javascript SpiderMonkey SyntaxError: fehlt: nach Objekt-ID:
- 5. JavaScript Parser in JavaScript
- 6. () [] +! in Javascript
- 7. Kotlin-Compiler auf JavaScript in JavaScript?
- 8. JavaScript in einer anderen JavaScript-Datei verwenden
- 9. Injizieren Sie Javascript in eine JavaScript-Funktion
- 10. Wie programmiere JavaScript JavaScript in PDF-Dateien?
- 11. einschließlich Javascript in einem anderen enthalten Javascript
- 12. Wie JavaScript JavaScript-Datei API in IE8
- 13. Javascript - wie Wert in Javascript-Code übergeben
- 14. Irgendeine Möglichkeit zu überprüfen, ob jemand seinen Browser mit Javascript/PHP geschlossen hat?
- 15. Möglich, die V8 JavaScript-Engine-Versionsnummer in JavaScript in Chrome
- 16. Konvertieren eines DOM-Knotens oder -Dokuments in JavaScript in JavaScript
- 17. Javascript in PHP und in diesem Javascript PHP-Code
- 18. Anfänger in Javascript: Wie bearbeite ich eine Adresse in Javascript?
- 19. Leere Funktionen in Javascript
- 20. Mauszeigerposition in Javascript?
- 21. Fragezeichen in JavaScript
- 22. Integer in JavaScript
- 23. @ Symbol in JavaScript-Block
- 24. Alias-Funktion in Javascript
- 25. JavaScript-Variablen in Gruntfile.js?
- 26. pythons hasattr in Javascript?
- 27. Bild In JavaScript Alert
- 28. in Javascript Nachladen
- 29. Enum Flaggen in JavaScript
- 30. Javascript Schließungen in Firebug
könnte ein guter Code Golf Frage (für eine kurze Implementierung) –
http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html –
Eine erstaunlich geringe Umsetzung (1 kb) sein: http://js1k.com/2010-first/demo/435 – Christophe