IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment réaliser un jeu d'échec ?


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 102
    Points : 54
    Points
    54
    Par défaut Comment réaliser un jeu d'échec ?
    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

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Et donc en fait quelle est précisément ta question ?

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    peut etre dans le forum algorithme.... réponse toi trouver :-)

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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.

  5. #5
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut pareil
    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...

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    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

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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 !!!!

  8. #8
    Membre actif Avatar de gdkenny
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 251
    Points : 248
    Points
    248
    Par défaut
    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

  9. #9
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Bah c pas si évident.
    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.
    et la prise en passant et la promotion du pion? et d'autre sur les positions... C'est tout aussi important


    Citation Envoyé par ced600 Voir le message
    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
    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

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Points : 230
    Points
    230
    Par défaut
    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+

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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é

  13. #13
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    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...

  14. #14
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut
    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.

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Points : 230
    Points
    230
    Par défaut
    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,

    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+

  16. #16
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Le projet etait fait en MFC, je peux le partager si des gens ont envie de s'amuser avec, y'a aucun soucis.
    Je ne suis pas contre

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Points : 230
    Points
    230
    Par défaut
    Okay,

    je le retrouve et je le mets ce soir si j'ai le temps alors.

    A+

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Points : 230
    Points
    230
    Par défaut
    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+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2008, 07h56
  2. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  3. [DBGrid avec Cumul]Comment réaliser un cumul dans un DBGrid
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 17h56
  4. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 02h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo