bonjour a tous,
j'aimerai realise un jeux d'echec en utilisant l'algo minmax mais je ne sais pas qoi prendre comme fonctions d'estimation et comment je vais construire l'arbre et aplique l'algo de minmax merci d'avoir m'aidee
bonjour a tous,
j'aimerai realise un jeux d'echec en utilisant l'algo minmax mais je ne sais pas qoi prendre comme fonctions d'estimation et comment je vais construire l'arbre et aplique l'algo de minmax merci d'avoir m'aidee
Et donc en fait quelle est précisément ta question ?
peut etre dans le forum algorithme.... réponse toi trouver :-)
Avant de chercher un algo pour l'IA, je te conseille de faire le jeu et de faire les fonctions de contrôle des mouvements pour vérifier que le joueur ne fait pas n'importe quoi.
J'y avais réfléchis avec un pote, et on en avait conclu que ce n'était pas si évident que cela de le faire.
un moteur d'echecs c'est pas du tout ce qu'il y a de plus simple, mais pour y avoir méditer tres longtemps, je te donne les idées que j'ai eues mais je pense qu'elles sont loin d'etre tres tres efficaces...
pour résumer, tu calcule tous les coups possibles et imaginables tout en restant légaux et tu crée une hierarchie en fonction des pièces par exemple sous forme de tableaux, arbres, matrices mais ce dernier est tres compliqué etc...(il faut mettre un controle de redondance des déplacements...), tu calcule ensuite le coup qui a le plus grand nombre de victoires en statistiques et tu choisis ce coup...J'ai commencé et je ne l'ai jamais terminé, donc je te souhaite du courage, c'est pas un petit projet...
salut
cela dit, question Algo... on en trouve plein sur le net....
Effectivement, l'algo le plus souvent cité est celui de l'arbre decisionnel...
En gros, tu évalues tous les coups du Joueur A, puis à partir de tous ces coups possibles, tu évalues les coups du Joueur B...; etc...; evidemment, tu te retrouves vite avec beaucoup de possibilités... Suivant le "niveau" de l'IA souhaité, tu fais 3/4/5....12 itérations de ta boucle de coups possibles...
Après, tu analyses chaque branche en pondérant selon des règles que tu auras définis et qui te diront : Tel situation vaut "plus" cher qu'une autre, etc...
Bien sur, lors de la création de ton arbre, tu peux "élaguer" les branches dès que celle ci ne semble pas pertinente (cela diminuera le nombre de branche)
Une fois que tu as trouvé la branche la plus "forte"... tu considères que c'est celle ci qui représente le coup à jouer... et tu le joues...
L'adversaire joue... et re évaluation de tous les coups etc...
A ta place, je suivrais le conseil de Ced600 concernant déja l'environnement
de jeu...
Après, je ne trouve pas que la gestion du déplacement des pièces soient quelque chose de compliqué... Chaque pièce ayant ses règles de déplacement, il faut "juste" vérifier que le déplacement est légal... et qu'aucune situation d'échec pour le joueur jouant n'est occasionné par le déplacement de sa pièce...
Bon courage en tout cas...
The Monz, Toulouse
Bah c pas si évident.
Je dirais qu'à la fin de chaque déplacement il faut calculé pour toutes les pièces les cases possibles.
Pour chaque case, il faut vérifier qu'elle n'est pas occupé par une pièce de ta couleur, dans ce cas là elle n'est plus aceptable.
Il faut vérifier que lors du déplacement de tes piéces, il ne faut pas autoriser celui ci audela d'une pièce de ta couleur ou de la couleur ennemi.
Un fou blanc peut manger un point noir mais ne peut pas aller au delà.
Exception pour le cavalier.
Les piéces ont des règles particulières de déplacement. Le point 1 case mais au début de partie 2, et en plus s'il fait deux quand un point pourrait le manger lorsqu'il fait un, le point adversaire conserve cette possibilité !!!
Le roi 1 cases. Fou, tour, dame, ont des déplacement qui doivent s'arrêter à la premiere rencontre d'un obstacle.
En plus de cela il faut pas oublier de manger la piece adversaire lorsqu'il y a prise.
Et après il faut vérifier à chaque fois que le roi n'est pas en echec ni mat, et donc pas juste vérifier qu'il n'a aucun mouvement possible pour le mat.
Il faut vérifier qu'aucune pièce ne peux se placer entre le roi et la pièce faisant l'echec, voir qu'aucune pièce ne peut manger cette pièce.
En plus faut gérer les 2 types de roques, ainsi qu'interdir celui-ci si le mouvement du roc mettrait le roi sur le trajet en echec, et l'interdir s'il y a eu un premier echec, enfin cela dépend si tu respecte les règles international ou les regles yahoo !!!!
Bref c'est pour cela que je considère que ce n'est pas si facile que cela de gérer les déplacements.
Je pense que l'algo décisionnel est même plus simple, car en fait c'est juste de la stat en fonction de règle et en t'appuyant sur les règles de mouvement que tu as déjà établis !!!!
En fait, pour résumer, ce qu'il ne faut PAS faire, c'est de commencer à coder sans savoir les fonctionnalités que tu veux implémenter
et la prise en passant et la promotion du pion? et d'autre sur les positions... C'est tout aussi important
de plus au premier échec du roi c'est faux! C'est tant que le roi n'a pas bougé...ou qu'il n'est pas en échec au moment de bouger... ou qu'il n'y a aucune case en prise par l'adversaire sur laquelle il va passer. il peut avoir été en échec dix fois et roquer (sans avoir bougé bien sûr).
C'est vrai aussi qu'il faut connaitre les règles. Ajouter
Je n'ai pas cité toutes les possibilités bien sur.
Pour le cas du premier échec, il y a 15 ans, on me l'avait appris comme règle officiel, après je ne me suis pas mis à jour.
Juste pour t'aider, j'ai fait un jeu de Go avec IA.
Je mis suis pris exactement comme TheMonz31 l'a expliquer au niveau algorithme. Et ca marche tres bien si tu evalues bien chaque coup dans l'arbre.
Et j'ai aussi commencer par developper les fonctions de deplacements comme la conseiller ced600.
Je pense que c'est une bonne methode a suivre.
A+
C'est un script relancé qui date du 02/04/2008, je pense que l'auteur a soit laissé tomber, soit fini
Bref sisqo60 l'à relancer certainement parce qu'il est amateur d'échec, et qu'il voulait rectifier mes oublies et mes erreurs sur les règles.
Ton jeu de go est sur 9x9, 13x13, ou 19x19 ?
Ton IA a un bon niveau ? Proche du niveau amateur ? Ou comme moi plus vers le 9-10 kyu ?
Tu l'as mis à disposition d'adversaire de go sur un serveur comme KGS ou non ?
Potentiellement si tu as un lie où je peux l'affronter je suis intéressé
salut
oui grand amateur d'échecs et et pour avoir déjà essayé d'en réaliser un...
Je l'ai bien fait, mais l'IA m'a achevé donc pas fini...
Je voulais également faire part des règles parce que développer un jeu d'échecs sans connaître toutes les règles possibles et imaginables serait idiot. Loin de moi l'esprit de contradiction...
Mais au delà de ça, il y a encore d'autres choses à prendre en compte, la position est toute aussi importante que les pièces restant en jeu...
Réaliser un jeu d'échec est ambitieux... mais pas impossible!
En effet, avec deux amis nous avons déjà réalisé ce type de jeu mais devant l'ampleur du projet nous avons fais quelques concessions.
La première était de ne pas inclure d'IA et de proposer un jeu pour deux joueurs. Si tu veux rendre les choses confortable tu peux proposer un jeu à deux en réseau.
Pour ce qui est de notre projet, nous avions proposé des graphismes en 3D d'une qualité acceptable pour l'époque. Aujourd'hui avec XNA il doit être possible de faire beaucoup mieux.
Quoi qu'il en soit notre jeu calculait les déplacements, les échecs et interdisait au joueur tout manquement aux règles : ces calculs "de base" représentent dèjà une certaine somme de travail.
Bon courage.
Salut,Ton jeu de go est sur 9x9, 13x13, ou 19x19 ?
Ton IA a un bon niveau ? Proche du niveau amateur ? Ou comme moi plus vers le 9-10 kyu ?
Tu l'as mis à disposition d'adversaire de go sur un serveur comme KGS ou non ?
Potentiellement si tu as un lie où je peux l'affronter je suis intéressé
Mon jeu etait sur un grand plateau, je ne l'ai pas sous la main mais ca doit etre vers du 19x19.
C'est un projet scolaire avec un tournoi interne a l'ecole. L'IA a un bon niveau mais elle n'est pas invincible , pas beaucoup de temps pour l'améliorer a fond mais elle tient la route.
Le projet etait fait en MFC, je peux le partager si des gens ont envie de s'amuser avec, y'a aucun soucis.
A+
Je ne suis pas contreLe projet etait fait en MFC, je peux le partager si des gens ont envie de s'amuser avec, y'a aucun soucis.
Okay,
je le retrouve et je le mets ce soir si j'ai le temps alors.
A+
Bon mon Gomoku fait plus de 512 Ko donc je ne peux pas le poster ici.
Je l'envoie par mail a ceux qui le demandent.
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager