Jeu D'échecs en JavaScript [fermé]
y a-t-il une API de jeu d'Échecs , purement écrite en JavaScript ? Pas De Flash! Quelqu'un sait l'algorithme(en général) utilisé dans les jeux d'Échecs ?
3 réponses
Comment fonctionne un algorithme d'Échecs?:
ce qu'un ordinateur d'Échecs essaie de faire est générer l'arbre de position de la planche cinq ou 10 ou 20 déménagements dans le futur. En supposant qu'il y en ait environ 20 déplacements possibles pour n'importe quelle position de la planche, un arbre à cinq niveaux contient 3 200 000 postes au conseil d'administration. Un arbre à 10 niveaux contient environ 10,000,000,000,000 (10 milliards de dollars) positions. La profondeur de la arbre qu'un ordinateur peut calculer est contrôlé par le la vitesse de la ordinateur en jouant le jeu. La manière la plus rapide les ordinateurs d'échecs peuvent générer et évaluer des millions de postes au conseil d'administration par seconde.
une fois qu'il génère l'arbre, puis le ordinateur a besoin "d'évaluer le conseil d'administration position."C'est, l'ordinateur a à regarder les pièces sur le plateau et décider que la disposition de les morceaux de "bon" ou "mauvais."La façon dont il c'est à l'aide d'une évaluation fonction. Le plus simple possible la fonction peut comptez simplement le nombre de pièces de chaque côté. Si l' l'ordinateur joue blanche et une certaines positions du Conseil ont 11 Blanc pièces et neuf pièces noires, l' la fonction d'évaluation la plus simple pourrait être:
11 - 9 = 2
évidemment, pour les échecs cette formule est trop simple, parce que certains morceaux sont plus utiles que d'autres. De sorte que le formule pourrait appliquer un poids à chaque type de pièce. En tant que programmeur pense à ce sujet, il ou elle fait le évaluation fonction plus et plus compliqué en ajoutant des choses comme position de la planche, contrôle du centre, vulnérabilité du roi à vérifier, vulnérabilité de la reine adverse, et des tonnes d'autres paramètres. Aucun peu importe la complexité de la fonction obtient, cependant, il est condensée en bas à un nombre unique qui représente la "bonté" de la poste au conseil d'administration.
Source .
pour la construction de votre propre le "moteur" javascript capable de jouer aux échecs à un niveau de base vérifier étape par étape JavaScript échecs avec CPU oppo
si vous faites défiler vers le bas il contient le code source de ce, doit dire très limité, moteur d'Échecs purement basé sur javascript. Il a également une version de travail du jeu à essayer et toutes les ressources nécessaires pour construire votre propre.
Quelques ressources utiles:
- première implémentation D'un moteur d'échecs en Javascript
- L'Anatomie de Programmes d'Échecs , par Tony Marsland, est une belle intro sur la façon dont actuelle les programmes d'Échecs fonctionnent.
- Echess Space
- Paul Verhelst - questions et réponses
- Bibliographie sur les algorithmes Minimax ( nouvelle version ).
- Astucieux est un programme fort dont le code source est librement disponible et, pour un programme d'échecs, tout à fait lisible.
- Travail Inachevé et Défis pour les Programmeurs d'Échecs
- Existe-t-il un algorithme parfait pour les échecs? Discussion ici sur donc
- Comment Les Ordinateurs Jouent Aux Échecs Le meilleur livre que j'ai trouvé décrivant la théorie derrière les échecs des algorithmes d'IA
pour une discussion algorithmique, essayez le Wiki de programmation D'Échecs .
les Techniques adaptées aux moteurs d'échecs sérieux ne sont pas nécessairement appropriées pour les jeux basés sur le web. Les vrais moteurs d'Échecs fonctionnent des ordres de grandeur 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 va chercher plus de 12 ply, tandis que javascript ne sera pas loin au-delà de 6 ply en temps raisonnable web. Donc quelque chose comme un Oracle piece-square , qui a des rendements décroissants et peut-être négatifs au fur et à mesure que la recherche s'approfondit et est par conséquent très à 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 gérable qui battra la plupart des visiteurs.
et bien sûr, vous ne voulez pas vraiment regarder ce que les autres font. Juste assurez-vous d'avoir variante d'une recherche alpha-bêta , puis modifier votre fonction d'évaluation et tout le reste comme vous le souhaitez.
en 2002 et 2012 j'ai écrit puis réécrit p4wn , un petit moteur javascript du domaine public. Il utilise alpha-bêta et un oracle carré. Il est probablement plus faible que Garbochess-JS , mais alors Garbochess a un livre d'ouverture qui est plus grand que le moteur p4wn entier.
the Computer Chess Blog documente la création d'un MOTEUR C# chess. 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.
aussi si vous voulez que votre moteur d'Échecs soit web activé, vous pourriez envisager D'utiliser C# avec une interface graphique Silverlight. Vous obtiendrez de meilleures performances avec .NET qu'avec JavaScript. Comme vous l'apprendrez ce sera de traduire dans un programme d'échecs plus fort (recherche plus approfondie). Un bon exemple D'Échecs Silverlight peut être trouvé à GeeksWithChess.com