Problème de dialogue entre deux classes

ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011 - 10 avril 2011 à 15:03
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011 - 30 avril 2011 à 20:14
Bonjour,

Je suis en train de coder une bataille-navale. J'ai une visual class IHM et une classe IA qui gère le jeu.
Mon problème est que je n'arrive pas à appeler une méthode de la classe IA depuis la classe IHM. J'ai essayé avec extends, super, implements, ... sans succès. J'ai surement mal placé / utilisé ces mots donc je demande de l'aide.

Voilà les deux méthodes :

(Dans la classe IHM)
public void placerBateau()
{
log.append("Placer le torpilleur (2 cases)\n");
int x1 = grille2.getSelectedRow();
int y1 = grille2.getSelectedColumn();
verifier(x1,y1);
}

(qui fait appelle à cette méthode dans la classe IA)
public boolean verifier(int a,int b)
{
if (a==0 || b==0)
{
return false;
}
else
{
return true;
}
}

Je n'arrive donc pas à faire dialoguer ces deux classes. Pourriez-vous m'aider s'il vous plait ?

Cordialement

Ecodhrin.

24 réponses

Utilisateur anonyme
10 avril 2011 à 17:39
Salut,

Petit conseil, pense à utiliser les balises dédiées au code la prochaine fois. Le fait de lier tes classes avec des extends, implements ect n'est, à mon avis, pas la bonne solution.

Si j'ai bien compris, c'est ta classe IHM qui fait appel à une méthode de la classe IA ?

Pour faire plus simple, il faudrait que l'objet instancié de IHM (new IHM()) ai une référence sur un objet IA.
Bref, il faudrait que tu crées un attribut IA dans ta classe IHM et que tu fasses à un moment appel à un setter pour avoir dans un coin de ta classe IHM ton objet IA.

De cette façon tu pourras faire IA.verifier(). Car tel que tu l'as fait là, verifier(x1,y1); fait appel à une méthode verifier() de ta classe IHM et pas IA.

Dis moi si je n'ai pas été clair.
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
11 avril 2011 à 13:47
Bonjour,

Si j'ai bien compris, c'est ta classe IHM qui fait appel à une méthode de la classe IA ?


> Oui c'est exactement ça.

Donc, si j'ai bien compris, il faut que je me débrouille pour pouvoir appeler la méthode vérifier() dans IHM par IA.verifier().

Comment puis-je faire ? ^^'

D'autre part, qu'est ce qu'un setter ?

Pourrais-tu expliciter d'avantage la marche à suivre s'il te plaît ?

Merci d'avance.

Ecodhrin
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
11 avril 2011 à 14:39
Je m'excuse pour le double post, je n'ai pas trouvé le bouton Edit ^^'

J'ai réussi à résoudre mon problème, il suffisait de mettre ma méthode verifier en static et de rajouter IA.verifier() dans ma classe IHM =)

Je suis confronté néanmoins à un nouveau problème.

Ma classe IA est censé piloté le déroulement du jeu. Je pense donc mettre un main dans la classe IA qui générerait mon tableau de jeu.

Mon problème est que lorsque je lance l'IA, rien ne s'affiche, alors que quand je lance ma classe IHM, mon ihm apparait bien.

Des suggestions ?

Merci d'avance

Ecodhrin
0
Utilisateur anonyme
11 avril 2011 à 15:50
Salut,

Content que tu aies reussi a regler ton premier probleme.
Le fait de mettre juste une methode main dans ta classe IA ne veut pas dire pour autant que tout va se lancer par öagie

Peux-tu poster le code de ton main ? Tu as pu par exemple oublier de faire un objet IHM dans le main.

Ce aue je fais souvent c'est faire une classe avec juste le main dedans. Et souvent dans ce main je lance mon IHM et la methode de jeu de mon IA.

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
13 avril 2011 à 11:42
Bonjour,

J'ai entre temps bidouillé un main dans ma classe IHM, le voici :

public static void main(String arg[])
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                IHM thisClass = new IHM();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }



Donc voilà, maintenant je peux lancer ma classe IHM par mon main.

Je me demande maintenant si je dois appeler mes méthodes dans le main, ou directement dans mon code comme par exemple :

private JTable getGrille2(int a)
    {
        grille2 = new JTable(a,a)
        {
            /**
             * 
             */
            private static final long serialVersionUID = 1L;

            public boolean isCellEditable(int row, int column)
            {
                return false;
            }
        };
        grille2.setRowHeight(27);
        grille2.setSize(new Dimension(grille2.getRowHeight()*a, grille2.getRowHeight()*a));
        grille2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        grille2.setRowSelectionAllowed(false);
        grille2.setBackground(Color.cyan);
        grille2.setFont(new Font("Dialog", Font.PLAIN, 22));
        grille2.setGridColor(Color.black);
        grille2.setShowGrid(true);
        grille2.setLocation(new Point(60+27*a, 30));
        grille2.setVisible(false);
        grille2.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent e) 
            {
                System.out.println(grille2.getSelectedRow() + "/" + grille2.getSelectedColumn());
                l = grille2.getSelectedRow();
                c = grille2.getSelectedColumn();
                if(placement)
                {
                    placerBateau();
                }
            }
        });
        return grille2;
    }


La variable placement étant un boolean que je fais passer à 1 au début de mon programme puis que je fais passer à 0 quand les bateaux sont fini d'être placé.

Qu'en penses-tu ?

Ecodhrin
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2011 à 18:16
C'est une question qui est assez souvent posée sur le forum sous des formes différentes. Je pense que tu débutes en programmation objet et que tu as déjà fait de la programmation fonctionnelle, ce qui explique tes difficultés.

Pour appeler une méthode d'une classe B dans une classe A, il faut disposer d'une instance de la classe B dans la classe A, c'est à dire l'avoir en attribut ou l'avoir en paramètre de la méthode dans laquelle tu souhaite réaliser l'appel par exemple :

/**
  * Exemple avec la classe en attribut
  */
public class ExempleAttribut {
    private ClasseB instanceB;

    /**
      * Constructeur 
      * @param b : instance de la classe B
      */
    public ExempleAttribut(ClasseB b){
        instanceB=b;
    }
    
    /**
      * methode qui fait appel a la méthode de la classe B
      */
    public methodeAppelante(){
        instanceB.methodeB();
    }

    /**
      * Lanceur
      */
    public static void main(String[] args){
        ExempleAttribut e = new ExempleAttribut(new ClasseB());
        e.methodeAppelante();
    }
}


/**
  * Exemple avec le parametre de la methode appelante
  */
public class ExempleParametre {

    /**
      * méthode qui fait appel à la classe B
      * @param instanceB instance de la classe B
      */
    public methodeAppelante(ClasseB instanceB){
        instanceB.methodeB();
    }

    /**
      * Lanceur
      */
    public static void main(String[] args){
        ExempleParametre e = new ExempleParametre();
        //On créé une nouvelle instance de B pour la donner en parametre à la méthode
        e.methodeAppelante(new ClasseB());
    }

}



Une remarque en passant, tu as une méthode qui est juste mais pas terrible, ta méthode vérifer peut se réécrire en une ligne :
public boolean verifier(int a,int b) { 
    if (a==0 || b==0) { 
        return false; 
    } 
    else { 
        return true; 
    } 
}

//La méthode ci dessous est identique
public boolean verifier(int a, int b){
    return !(a==0 || b==0);
} 
0
Utilisateur anonyme
13 avril 2011 à 18:50
Après on peut dire qu'il y a à peu près autant de façon de coder que de codeurs. Quand je me suis mis à l'objet j'avais quelques soucis similaires aux tiens.

Sinon, ce que je vais souvent, c'est d’alléger une maximum la méthode main. Généralement elle ne contient qu'une ligne pour moi.

Par exemple, tes lignes

thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);


peuvent devenir :
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

si tu les mets dans le constructeur de ta classe IHM.


Sinon ce que je trouve un peu dommage (ce qui n'est pas vraiment un reproche vu que tu as l'air de débuter), c'est que dans ta méthode mouseClicked tu récupères ce qui est selectionné mais ça ne te sert que si placement est à vrai.


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
14 avril 2011 à 19:30
Julien39 = => Merci, j'ai mieux compris grâce à tes explications.

Pylouq ==> J'ai en effet un petit problème d'organisation de mon code : en gros je sais pas comment je vais faire pour "dérouler" le jeu. J'ai pensé à utiliser un switch/case dans ma méthode mouseClicked qui, en fonction de là ou en est le jeu, appellerait d'autres méthodes. A la place de ma variable placement, j'aurais un compteur i qui commencerait à 0. Mon switch/case serait alors à 0 et lancerait un appel à la méthode placerBateau depuis le mouseClicked. Je mettrais alors i à 1 (par ex.) et lors du clic suivant sur ma grille (le joueur qui veut placer la proue du bateau), le switch/case serait alors à 1 et appelerait la méthode verifier.

Ceci n'est qu'un exemple mais j'espère avoir été assez clair ^^'

Voila une ébauche pour illustrer :

            public void mouseClicked(java.awt.event.MouseEvent e) 
            {
                System.out.println(grille2.getSelectedRow() + "/" + grille2.getSelectedColumn());
                l   = grille2.getSelectedRow();
                c = grille2.getSelectedColumn();
                
                switch(i)
                {
                	case 0:
                		log.append("Placer le torpilleur (2 cases)");
                		placerBateau();
                		i = 1 ;
                		break;              	
                	
                	case 1:
                		if(IA.verifier(l,c))
                		{
                			grille2.setValueAt("x", l, c);// si la case sélectionnée est validée, on met un x dans la case
                		}
                		break;
                }
            }


public static boolean verifier(int a,int b)
    {
        if (a==0||b==0)
        {
            IHM.log.append("Veuillez sélectionner une autre case.\n");
            return false;
        }
        else
        {
            IHM.log.append("OK\n");
            return true;
        }
    }
0
Utilisateur anonyme
14 avril 2011 à 22:11
Après y'a plusieurs façon de faire.

Ce qui me titille un peu c'est que là dans ton switch c'est juste du placement. Sauf qu'après tu vas devoir gérer le deuxième partie avec les tirs. Comment comptes-tu t'occuper de ça ? Car comme tu as fait tu as intérêt à bien gérer ton i car sinon tu risque d'avoir des demandes de placement quand il faut tirer

Ce que je ferais, c'est distinguer les deux parties dans ta classe IHM. Faire quelque chose du genre

public class IHM {

    // ton code
    public static final int PREPARATION =   0;
    public static final int TIRS = 1;
    public static int etat_partie = PREPARATION;

    // ton code
}


Cela va te permettre de savoir où tu en es dans le jeu.
Du coup, là où tu as ta méthode mouseClicked ; tu peux faire quelque chose du genre :

         
            public void mouseClicked(java.awt.event.MouseEvent e) 
            {
                System.out.println(grille2.getSelectedRow() + "/" + grille2.getSelectedColumn());
                l   = grille2.getSelectedRow();
                c = grille2.getSelectedColumn();
                
                if ( monIHM.etat_propriete = IHM.PREPARATION ) {
                     // ton code pour les placements
                }

                if ( monIHM.etat_propriete = IHM.TIRS ) {
                     // ton code pour la gestion des tirs
                }

            }

Je pense que ça va te permettre de mieux gérer ces deux aspects.

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
15 avril 2011 à 00:03
J'ai remanié mon code et j'en suis pour l'instant rendu à ceci :

public void mouseClicked(java.awt.event.MouseEvent e) 
{
System.out.println(grille2.getSelectedRow() + "/" + grille2.getSelectedColumn());
l = grille2.getSelectedRow();
c = grille2.getSelectedColumn();

switch(i)
{
case 0:
if(nbcase < 6)
{
placerBateau();
break;
}
else
{
i = 1;
}


case 1:
log.append("test");

}
}


public void placerBateau()
{
if(nbcase < 6)
{
if(nbcase < longueur)
{
if(IA.verifier(l,c))
{
grille2.setValueAt("x", l, c);
nbcase++;
}								
}
else
{
longueur++;
nbcase = 0;
}
}
}


public static boolean verifier(int a,int b)
    {
        if (a==0||b==0)
        {
            IHM.log.append("Veuillez sélectionner une autre case.\n");
            return false;
        }
        else
        {
            IHM.log.append("OK\n");
            return true;
        }
    }


J'arrive à mettre des croix dans les cases sélectionnées si elles sont valide.
Je fais des bateaux de 2,3,4,5,6 cases.

Mon problème maintenant est de faire en sorte que les cases cliquées soit voisines et non en diagonale.

J'ai pensé à un système de if, qu'en pensez-vous ?
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
15 avril 2011 à 00:04
J'ai oublié de préciser que les variables nbcase et longueur sont respectivement initialisées à 0 et 2.
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
15 avril 2011 à 00:59
Je m'excuse du multipost ^^'

Je voulais vous montrer où j'en étais finalement rendu :

public void mouseClicked(java.awt.event.MouseEvent e) 
{
System.out.println(grille2.getSelectedRow() + "/" + grille2.getSelectedColumn());
l =  grille2.getSelectedRow();
c = grille2.getSelectedColumn();

switch(i)
{
case 0:
if(nbcase < 6)
{
if(nbcase == 0)
{
m = l;
n = c;
}
placerBateau();
break;
}
else
{
i = 1;
}


case 1:
log.append("test");

}
}


public void placerBateau()
{
if(nbcase < 6)
{
if(nbcase < longueur)
{
if(IA.verifier(l,c))
{
if( (Math.abs(l)<m+longueur) && (Math.abs(c)<n+longueur) )
{
grille2.setValueAt("x", l, c);
nbcase++;
}
}								
}
else
{
longueur++;
nbcase = 0;
}
}
}


Le code reste à améliorer, j'arrive à faire en sorte que le joueur ne puisse pas placé les points du bateau n'importe où
avec (Math.abs(l)<m+longueur) && (Math.abs(c)<n+longueur) . Le problème est que cela ne permet pas encore de limiter le placement à l'horizontale ou à la verticale uniquement, on peut encore avoir ceci sur la grille :
x
x x par exemple.

Voilà =)
0
Utilisateur anonyme
15 avril 2011 à 17:24
Ça commence à prendre forme

Petit détail, si tu es sûr que la seule fois où tu appelles ta méthode placerBateau() est quand nbcase est inférieur à 6, ce n'est pas la peine de refaire un if ( nbcase < 6).

Par contre, ton dessin avec les x n'est pas super clair ^^' C'est quoi ce problème au juste ?

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
18 avril 2011 à 15:16
Voilà ce que je peux faire :
0
Utilisateur anonyme
19 avril 2011 à 20:31
Même si je ne sais pas comment tu gères le positionnement (je ne sais pas lequel ou lesquels ne vont pas sur ton image), tu peux faire une méthode de vérification pour chaque type de bateau.
Ainsi tu appelleras cette méthode dès que ton joueur a saisi son bâtiment. L'avantage de faire une méthode par bateau c'est que tes vérifications sont plus faciles à gérer car tu vas devoir utiliser plusieurs boucles différentes pour contrôler tout ça.

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
21 avril 2011 à 19:28
Ok après une après-midi entière à plancher sur le sujet, j'ai enfin réussi à obtenir une méthode parfaite. Elle prend en compte tout les cas possibles de placements qui ne peuvent pas marcher et ne laisse la possibilité de placer les bateaux que là ou je veux =)

Next step : la méthode tirer() !
0
Utilisateur anonyme
22 avril 2011 à 11:00
Ok, maintenant on attend la suite

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
27 avril 2011 à 09:03
Bonjour,

Bon bah je reviens vers vous parce que je n'arrive pas a générer des bateaux placés aléatoirement sur ma grille =D

Je vous met le code pour un placement par le joueur (sachant que cette fonction est appellée à chaque clic du joueur sur la grille).

Si vous avez des idées pour un placement aléatoire je suis prenneur =/

public class IA
{ 
    public static int p = 0;
    private static int m = 0;
    private static int n = 0;
    public static int longueur = 2;
    private static int x =0;
    public static void verifier(int a,int b)
    {   
        int randa = 0;
        int randb = 0;
        
        
        if (a==0||b==0)
        {
            IHM.log.append("Veuillez sélectionner une autre case.\n");
        }
        else
        {
            switch(p)
            {
            case 0:
            {
                int x1 = 0;
                int x2 = 0;
                int x3 = 0;
                int x4 = 0;
                randa = (int)(Math.random()*(IHM.grille3.getRowCount()-1)+1);
                randb = (int)(Math.random()*(IHM.grille3.getRowCount()-1)+1);
                
                if(IHM.grille2.getValueAt(a, b)!="x")
                {
                    IHM.placerBateau(IHM.grille2, "x", a, b);
                }
                else
                {
                    IHM.log.append("Veuillez choisir une autre case.\n");
                    break;
                }

                for(int i = a+1; ia-longueur+1 ; i--)
                {
                    if(i>0)
                    {
                        if(IHM.grille2.getValueAt(i, b) == "x")
                        {
                            x2 = 1;
                        }
                    }
                }
                if(a-longueur+1 > 0 && IHM.grille2.getValueAt(a-longueur+1, b)!="x" && x2==0)
                {
                    IHM.placerBateau(IHM.grille2,"o", a-longueur+1 , b);
                }

                for(int i = b+1; ib-longueur+1 ; i--)
                {
                    if(i>0)
                    {
                        if(IHM.grille2.getValueAt(a, i) == "x")
                        {
                            x4 = 1;
                        }
                    }
                }
                if(b-longueur+1 > 0 && IHM.grille2.getValueAt(a, b-longueur+1)!="x" && x4==0)
                {
                    IHM.placerBateau(IHM.grille2,"o", a , b-longueur+1);
                }
                m = a;
                n = b;
                p = 1;
                break;
            }

            case 1:
            {
                if(IHM.grille2.getValueAt(a, b)== "o")
                {
                    if(a == m)
                    {
                        if(b>n)
                        {
                            for(int k = n+1 ; k < n+longueur ; k++)
                            {
                                IHM.placerBateau(IHM.grille2,"x", m, k);
                            }
                            x = 1;
                        }
                        if(b<n)
                        {
                            for(int k = n-1 ; k > n-longueur ; k--)
                            {
                                IHM.placerBateau(IHM.grille2,"x", m, k);
                            }
                            x = 2;
                        }
                    }               
                    if(b == n)
                    {
                        if(a>m)
                        {
                            for(int k = m+1 ; k < m+longueur ; k++)
                            {
                                IHM.placerBateau(IHM.grille2,"x", k, n);
                            }
                            x = 3;
                        }
                        if(a<m)
                        {
                            for(int k = m-1 ; k > m-longueur ; k--)
                            {
                                IHM.placerBateau(IHM.grille2,"x", k, n);                            
                            }
                            x = 4;
                        }
                    }
                    if(m+longueur-1 < IHM.grille2.getRowCount() && x!=3 && IHM.grille2.getValueAt(m+longueur-1, n)!= "x")
                    {
                        IHM.placerBateau(IHM.grille2,"", m+longueur-1 , n);
                    }
                    if(m-longueur+1 > 0 && x!=4 && IHM.grille2.getValueAt(m-longueur+1, n)!= "x")
                    {
                        IHM.placerBateau(IHM.grille2,"", m-longueur+1 , n);
                    }
                    if(n+longueur-1 < IHM.grille2.getColumnCount() && x!=1 && IHM.grille2.getValueAt(m, n+longueur-1)!= "x")
                    {
                        IHM.placerBateau(IHM.grille2,"", m , n+longueur-1);
                    }
                    if(n-longueur+1 > 0 && x!=2 && IHM.grille2.getValueAt(m, n-longueur+1)!= "x")
                    {
                        IHM.placerBateau(IHM.grille2,"", m , n-longueur+1);
                    }

                    longueur++;

                    IHM.log.append("OK\n");

                    if(longueur == 3)
                        IHM.log.append("Placez le sous-marin (3 cases).\n");
                    if(longueur == 4)
                        IHM.log.append("Placez le contre-torpilleur (4 cases).\n");
                    if(longueur == 5)
                        IHM.log.append("Placez le croiseur (5 cases).\n");
                    if(longueur == 6)
                        IHM.log.append("Placez le porte-avion (6 cases).\n");
                    if(longueur == 7)
                        IHM.log.append("Cliquez n'importe où pour continuer.\n");
                    p = 0;
                }
                else
                {
                    IHM.grille2.setValueAt("", m, n);
                    if(m+longueur-1< IHM.grille2.getRowCount())
                    {
                        if(IHM.grille2.getValueAt(m+longueur-1, n)!="x")                    
                            IHM.placerBateau(IHM.grille2,"", m+longueur-1, n);              
                    }
                    if(m-longueur+1>0)
                    {
                        if(IHM.grille2.getValueAt(m-longueur+1, n)!="x")
                            IHM.placerBateau(IHM.grille2,"", m-longueur+1, n);
                    }
                    if(n+longueur-1< IHM.grille2.getColumnCount())
                    {
                        if(IHM.grille2.getValueAt(m, n+longueur-1)!="x")
                            IHM.placerBateau(IHM.grille2,"", m, n+longueur-1);
                    }
                    if(n-longueur+1>0)
                    {
                        if(IHM.grille2.getValueAt(m, n-longueur+1)!="x")
                            IHM.placerBateau(IHM.grille2,"", m, n-longueur+1);
                    }
                    p = 0;
                }
                break;
            }

            }






        }

    }
}


public static void placerBateau(JTable grille, String s, int a, int b)
{		
grille.setValueAt(s, a, b);
}
0
Utilisateur anonyme
27 avril 2011 à 19:09
Tu peux faire grosso modo la même chose pour un placement aléatoire.
Tu fais le même traitement pour chaque bâtiment :

- tu choisi une case au hasard de ta grille
- tu choisi au hasard si tu veux placer ton bateau verticalement ou non
- tu détermines le nombre de cases disponibles sur la grille pour bien placer ton bateau (donc vérification si ça ne sort pas de ta grille, vérification si les cases ne sont pas déjà occupée)
- si tu as la place, tu mets ton bateau. Sinon tu choisi une autre case.

Bon courage

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
ecodhrin Messages postés 22 Date d'inscription jeudi 17 février 2011 Statut Membre Dernière intervention 6 mai 2011
27 avril 2011 à 20:45
Est-ce que tu penses que cela est faisable directement dans la méthode verifier() ?
Ou est-ce que je dois faire plutôt une autre méthode ?

Je me pose cette question parce que dans le cas du placement par un joueur, il y a déjà les clics, que l'IA ne peut pas faire pour faire avancer la méthode. De plus, la case initiale du bateau choisie par le joueur demande beaucoup de vérifications alors que celle générée aléatoirement remplira automatiquement ces conditions, ect ect
0
Rejoignez-nous