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++/CLI Discussion :

Puissance 4 - IA par récursivité


Sujet :

C++/CLI

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Novembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Puissance 4 - IA par récursivité
    Bonsoir amis développeur,

    Voilà je cherche a coder une IA en C++ pour implémenter un mode 2 joueurs à mon programme de Puissance 4, mais j'ai pas mal de problèmes, tant au niveau de la compréhension du fonctionnement de l'IA que du code en lui même.

    Pour faire simple j'ai entendu parler de l'algorithme Min Max qui calcule tout les coups possibles par récursivité et choisit en fonction le coups a jouer, je comprend la théorie mais j'arrive pas a mettre sa en pratique, surtout lorsqu'il faut donner un "poid" a mes noeuds et ensuite décider lequel choisir.

    Donc j'ai essayer de faire une IA comme je pouvais, mais elle ne fonctionne pas, avez-vous une idée pour améliorer ca ou que je puisse utiliser mon code comme base pour une transformation en un algo Min Max ?

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    // Fonction d'intelligence artificielle
    int IA(
    	int profondeur,
    	int JoueurActuel,
    	int grille_simuler[LIGNE][COLONNE],
    	int x)
    {
    	profondeur--;        //  on descend dans la profondeur du calcul
    	int solution = 0;
     
    	PlacerJeton(joueurActuel, x ,ligne_simuler, grille_simuler);
     
    	if (VerifierVictoire(joueurActuel, grille_simuler) == false)    // Si ce que je joue ne me fait pas tout de suite gagner
    	{
    		if (profondeur != 0)		// Tant que la profondeur maximal n'est pas atteinte, on continue de jouer
    		{
    			int ligne_simuler;		// Correspond a la ligne simuler par l'IA
    			int c;					// Correspond a la colonne simuler jouer par le joueur adverse
     
    			ligne_simuler = DeterminerLigne(x, grille_simuler);				// On détermine la ligne de jeu pour la colonne x
    			PlacerJeton(joueurActuel, x ,ligne_simuler, grille_simuler);	// On place le pion a la case définit
    			x++ ;															// On incrémente x
     
    			// On change de joueur
    			if (joueurActuel == 'X') 
    				joueurActuel = 'O';
    			else
    				joueurActuel = 'X';
     
    			for (int i = 0 ; i < COLONNE ; i++)       //  On parcour de nouveau toute les colonnes possible
    			{
    				if (DeterminerLigne(c, grille) != 6)	// On vérifie si la colonne n'est pas pleine
    				{
    					c = IA(profondeur,joueurActuel,grille_simuler,i);	// Appel récursif de IA pour prévoir tout les coups
    				}
    			}
    		}
    	}
     
    	// Si ce que l'IA vient de jouer la fait gagner, on retourne la colonne
    	if (VerifierVictoire(joueurActuel, grille_simuler) == true && joueurActuel == 'O')
    	{
    		return x;
    	}
     
    	// Cas ou on ne peut pas gagner, ou que la partie est finit
    	return 1;	// Je retourne une valeur aléatoire, cette partie est a finir
    }
    Qu'en pensez-vous ?

    Bien Cordialement,
    SeaoI

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Bonjour,
    1. Ce n'est pas du C++/CLI, mais du C++ normal.
    2. Ton code passe la grille simulée par adresse, donc si PlacerJeton modifie la grille (même la grille simulée), alors dans ta récursivité tu dois annuler la modification avant de simuler un coup différent.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Arborescence par récursivité - treeview
    Par Renaud976 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/11/2011, 05h41
  2. [XSLT] Sortie de template/boucle : par récursivité ?
    Par pegazuss5 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 01/12/2010, 22h50
  3. Résoudre par récursivité
    Par Lucas Panny dans le forum Langage
    Réponses: 2
    Dernier message: 21/10/2008, 09h38
  4. Chargement du tableau par récursivité
    Par JetliMohamed dans le forum Pascal
    Réponses: 4
    Dernier message: 13/01/2008, 18h42
  5. x² et puissance de x par récurrence
    Par olivieram dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 15/12/2002, 23h59

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