Y at-il une API de jeu d'échecs, purement écrite en JavaScript? Pas de flash! Quelqu'un connaît l'algorithme (en général) utilisé dans les parties d'échecs?Jeu d'échecs en JavaScript
Répondre
Comment fonctionne un algorithme d'échecs ?:
Quel ordinateur d'échecs essaie de faire est l'arbre générer position bord cinq ou 10 ou 20 se déplace dans l'avenir. En supposant qu'il y a environ 20 mouvements possibles pour n'importe quelle position de la carte, un arbre à cinq niveaux contient 3,200,000 positions de la carte. Un arbre de 10 niveaux contient environ 10 000 000 000 000 (10 trillions) de positions. La profondeur de l'arbre qu'un ordinateur peut calculer est contrôlée par la vitesse de l'ordinateur jouant au jeu. Les ordinateurs d'échecs les plus rapides peuvent générer et évaluer des millions de positions de carte par seconde. Une fois qu'il génère l'arbre, l'ordinateur doit "évaluer les positions de la carte " Autrement dit, l'ordinateur a pour regarder les pièces sur le tableau et décider si cet arrangement de pièces est "bon" ou "mauvais". La manière dont cela est fait en utilisant une fonction d'évaluation . La fonction la plus simple possible peut simplement compter le nombre de pièces de chaque côté. Si l'ordinateur joue blanc et une certaine position du conseil d'administration a 11 blanc pièces et neuf pièces noires, la fonction d'évaluation simple peut-être:
11 - 9 = 2
Il est évident que, pour les échecs cette formule est trop simple, parce que certaines pièces ont plus de valeur que d'autres. Ainsi, la formule peut appliquer un poids à chaque type de pièce . En tant que programmeur pense à ce sujet, il fait la fonction d'évaluation de plus en plus compliqué en ajoutant des choses comme la position du conseil d'administration, le contrôle du centre, vulnérabilité du roi pour vérifier, vulnérabilité de la reine de l'adversaire, et des tonnes d'autres paramètres. Non combien compliqué la fonction obtient, cependant, il est condensé à un seul nombre qui représente le "bonté" de cette position du conseil.
Pour construire votre propre moteur 'javascript qui est capable de jouer aux échecs lors d'un contrôle de niveau de base Step by Step Javascript Chess with CPU oppo
Si vous faites défiler vers le bas, il contient le code source de ce fait, doit dire très limité, le moteur d'échecs purement javascript . Il a également une version de travail du jeu à essayer et toutes les ressources nécessaires pour construire le vôtre.
Quelques ressources utiles:
- First implementation of a chess engine in Javascript
- The Anatomy of Chess Programs, par Tony Marsland, est une belle introduction sur la façon dont les programmes d'échecs en cours travail.
- Chess Space
- Paul Verhelst - Questions et réponses
- Bibliography on Minimax Algorithms (newer version).
- Crafty est un programme fort dont le code source est disponible gratuitement et, pour un programme d'échecs, tout à fait lisible.
- Unfinished Work and Challenges to Chess Programmers
- Is there a perfect algorithm for Chess? Discussion ici si
- How Computers Play Chess Le meilleur livre que j'ai trouvé qui décrit la théorie derrière échecs algorithmes AI
Le Computer Chess Blog documente la création d'un moteur d'échecs C#. Ce n'est pas JavaScript mais la syntaxe est assez similaire pour que vous puissiez avoir une bonne compréhension des différents composants du moteur d'échecs.
De même, si vous souhaitez que votre moteur d'échecs soit activé sur le Web, vous pouvez envisager d'utiliser C# avec une interface graphique Silverlight. Vous obtiendrez de meilleures performances de .NET que vous le feriez avec JavaScript. Comme vous l'apprendrez, cela se traduira par un programme d'échecs plus fort (plus profond). Un bon exemple de Silverlight Chess peut être trouvé à GeeksWithChess.com
Pour la discussion algorithmique, essayez le Chess Programming Wiki.
Les techniques adaptées aux moteurs d'échecs sérieux ne sont pas nécessairement adaptées aux jeux en ligne. Les vrais moteurs d'échecs fonctionnent plus rapidement, en utilisant des livres d'ouverture de plusieurs mégaoctets et en passant des minutes ou des heures à chaque tour. Un vrai moteur d'échecs cherchera plus profond que 12 plis, tandis que javascript ne dépassera pas 6 plis dans un temps web raisonnable. Par conséquent, quelque chose comme un piece-square oracle, qui a des rendements décroissants et éventuellement négatifs que la recherche approfondit et est par conséquent bien à la mode dans les cercles de programmation d'échecs, est sans doute bien adapté à un moteur JavaScript. Si vous faites ce que les gens faisaient dans les années 80, vous finirez avec un moteur rapide et maniable qui va battre la plupart des visiteurs.
Et bien sûr vous ne voulez pas vraiment regarder ce que les autres font. Assurez-vous juste que vous avez une variation d'un alpha-beta search, puis modifiez votre fonction d'évaluation et tout le reste comme bon vous semble.
En 2002 et 2012, j'ai écrit puis réécrit p4wn, un petit moteur de Javascript du domaine public. Il utilise alpha-bêta et un oracle pièce-carré. Il est probablement plus faible que Garbochess-JS, mais alors Garbochess a un livre d'ouverture qui est plus grand que l'ensemble du moteur p4wn.
pourrait être un bon code de golf question (pour une courte mise en œuvre) –
http://javascript.internet.com/games/javascript-chess-with-cpu-oppo.html –
Une étonnante petite mise en œuvre (1 Ko): http://js1k.com/2010-first/demo/435 – Christophe