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

MATLAB Discussion :

RE morpion et IA


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 12
    Points : 6
    Points
    6
    Par défaut RE morpion et IA
    Bonjour,

    Suite à mon précédent message, j'aimerais faire une IA pour mon morpion. J'ai fais une petite IA toute basique mais pas assez efficace. J'ai vu qu'il existait pour les IA, l'algo MIN_MAX que j'ai trouvé en C et j'aimerais pouvoir l'utiliser mais j'ai du mal à le transposer sur matlab. Pourriez-vous m'aider s'il vous plaît ??
    Je remet mon code principale:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    clear all;
    close all;
    clc;
     
    %CONSTANTES
    JOUEUR_1 = 0 ;
    JOUEUR_PC = 1 ;
    NB_POINTS= [1 10]; %Points associes a chaque joueur
     
    Coord =[0,0];%coordonnes du clic de l'utilisateur
    coordonnees_valides = 0; %Var.bool. pour verifier la validite de Coord
     
    %joueur = -1; %Joueur en cours
     
    %CREATION D UNE FENETRE GRAPHIQUE
     
    f=figure (1);
    hold on
     
    %FONCTION DE CREATION DU PLATEAU DE JEUx1=0.5;
     
    affiche_jeux();
     
    quitterJeu = 0; %quitter le jeu
     
    changeJoueur = false;% changer de joueur 
     
    while(quitterJeu == 0)
     
    GAGNANT = -1; %Pour boucler
     
    %CREATION DE LA MATRICE ASSOCIEE
    A=zeros(3,3);
     
    %DEROULEMENT DU JEU
       if(changeJoueur == false)% changer de joueur a chaque tour
        joueur=JOUEUR_1 ;
       end
     
       while(GAGNANT == -1)
     
         if(joueur == JOUEUR_1)
     
             %Recuperation du clic de l'utilisateur
            coord = recup_click(); % on recupere les coordonnées du click
     
             %Verifier si les coordonnées sont valides( bornes , (deja jouees) ?)
             while((coord(1)<0.5 || coord(1)>3.5) || (coord(2)<0.5 || coord(2)>3.5)) % tant que l'on click en dehors du tableau de jeu
                coord = recup_click(); % on peut toujours clicker partout
             end
     
             if(A(coord(1),coord(2)) == 0) %si la case de la matrice ou l'on click est vide, on peu mettre une croix/rond
     
                 plot(coord(1), coord(2),'kX','LineWidth',90,'Tag','supprObjtGraphe')
                 A(coord(1),coord(2))=NB_POINTS(1);% on remplace la case cochée par 1
                 joueur = JOUEUR_PC;
     
             end
         else
                 IA_jouer(A);
     
                 joueur = JOUEUR_1;
         end
     
         GAGNANT = regles_jeux2(A);
     
      end
     
    %AFFICHAGE DU GAGNANT
        x=3.5;
        y=2;
     
        switch(GAGNANT)
            case JOUEUR_1
                msgbox('Le joueur 1 a gagné','Gagnant')
                Text1  = ('J1 WIN');
            case JOUEUR_PC
                msgbox('Le PC a gagné','Gagnant')
                Text1  = ('PC WIN');
            otherwise
                msgbox('Match nul','Gagnant')
                Text1  = ('TIE');
        end
     
        text(x,y,['\leftarrow ' Text1 ],'FontSize',20,'Tag','supprObjtGraphe'); 
     
        %choix de quitter ou recommencer la partie
        choix = questdlg('Que voulez-vous faire','Jeu Terminé','New Game','Close','Close');
        switch(choix)
            case {'Close'}
                close(f)           
                quitterJeu = 1;
            case {'New Game'}
                delete(findobj(f,'Tag','supprObjtGraphe')); % supprime tout les objets graphiques ou j'ai mis 'tag'      
        end
        changeJoueur = true;
    end
    Cordialement Ben

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Et si tu nous montrais ce que tu as essayé de coder dans la fonction IA_jouer?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    heu bah j'ai recopié tout bêtement une partie de l'algo MIN-MAX, histoire de l'analyser et de l'adapter sur matlab

    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
    function IA_jouer(C)
     
    profondeur;
    max = -10000;
     
         for i=1 : 3
     
              for j=1 : 3
     
                    if(C(i,j) == 0)
     
                          C(i,j) = 10;
                          tmp = Min(C,profondeur-1);
     
                          if(tmp > max)
     
                                max = tmp;
                                maxi = i;
                                maxj = j;
                          end
     
                          C(i,j) = 0;
                    end
              end
         end
     
         C(maxi,maxj) = 1;
     
    end
    Il manque 2 3 fonctions pour qu'il marche mais je voulais tout d'abord essayer de mieux comprendre le principe

Discussions similaires

  1. pb de programmation du Morpion en allegro
    Par hsoussou dans le forum Allegro
    Réponses: 5
    Dernier message: 19/05/2006, 11h02
  2. [Débutant] Jeu Morpion en C++ avec OpenGL
    Par Paulinho dans le forum OpenGL
    Réponses: 2
    Dernier message: 31/03/2006, 13h15
  3. [LG]Un jeu du morpion
    Par yffick dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2003, 18h52
  4. [Morpion] Faire jouer l'ordinateur intelligement
    Par Invité dans le forum Intelligence artificielle
    Réponses: 8
    Dernier message: 18/09/2003, 11h05

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