Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : comprends pas mon erreur au morpion 10*10 [ Archives / Au secours ] (nicoworld)

mardi 14 septembre 2004 à 20:35:39 | comprends pas mon erreur au morpion 10*10

nicoworld

Voici mon code et je galère dans la méthode vérifie...

ca complile et change bien de couluer mais par contre ne veut pas marquer le joueur qui a gagné qd il y a un vainqueur!

De plus lorsque l'on clic dans la premiere case [0][0] il reste bloque sur les croix/ronds et là par contre il compte....et des qu'il il y a un vainqueur c'est bon!!!


merci de m'aider!!!


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


class jeu extends JFrame implements ActionListener
{
JButton bouton[]=new JButton [100]; //Déclaration des bouttons (100 cases)
JMenuBar barre; // déclaration de la barre
JMenu fichier,help; // déclaration des menus
JMenuItem nouveau,quitter,apropos; //déclaration des sous menus


Icon iconO = new ImageIcon("iconO.png"); //déclaration de l'image du joueur rond
Icon iconX = new ImageIcon("iconX.png"); //déclaration de l'image du joueur croix


int tabe[][] = new int [10][10];
boolean tab [] = new boolean [100];
boolean qui=false;

String messageO = "Le joueur O à Gagné";
String messageX = "Le joueur X à Gagné";

public jeu()
{

Container c = getContentPane();
c.setLayout(new GridLayout(10,10,1,1));

barre = new JMenuBar();
fichier = new JMenu("Fichier");


nouveau = new JMenuItem("Nouveau"); nouveau.addActionListener(this);
quitter = new JMenuItem("Quitter"); quitter.addActionListener(this);
apropos = new JMenuItem("A propos"); apropos.addActionListener(this);
fichier.add(nouveau);
fichier.add(quitter);

help = new JMenu("Aide");
help.add(apropos);
barre.add(fichier);
barre.add(help);
setJMenuBar(barre);


for(int k=0;k<100;k++)

{
bouton[k]=new JButton();
bouton[k].addActionListener(this);
c.add(bouton[k]);
}
setResizable(false);

setSize(567,667);
setVisible(true);


addWindowListener
(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);

}


public void nouveauJeu()
{
for(int k=0;k<100;k++)
{
tab[k]=false;

bouton[k].setIcon(null);
}
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
tabe[i][j]=0;
}
}

public boolean verifie()
{
boolean a = false;
int i, j;

for (i = 0; i <= 10; i++)
{
for (j = 0; j < 10; j++)
{


if (tabe[i][j] == 1)
{

if ( (tabe[i + 1][j] == 1) && ( (i + 1) < 10))
if ( (tabe[i + 2][j] == 1) && ( (i + 2) < 10))
if ( (tabe[i + 3][j] == 1) && ( (i + 3) < 10)) {
a = true;
return (a);

}

if ( (tabe[i + 1][j + 1] == 1) && ( (i + 1) < 10) && ( (j + 1) < 10))
if ( (tabe[i + 2][j + 2] == 1) && ( (i + 2) < 10) && ( (j + 2) < 10))
if ( (tabe[i + 3][j + 3] == 1) && ( (i + 3) < 10) &&
( (j + 3) < 10)) {
a = true;
return (a);

}

if ( (tabe[i][j + 1] == 1) && ( (j + 1) < 10))
if ( (tabe[i][j + 2] == 1) && ( (j + 2) < 10))
if ( (tabe[i][j + 3] == 1) && ( (j + 3) < 10)) {
a = true;
return (a);

}

if ( (tabe[i - 1][j + 1] == 1) && ( (i - 1) >= 0) && ( (j + 1) < 10))
if ( (tabe[i - 2][j + 2] == 1) && ( (i - 2) >= 0) && ( (j + 2) < 10))
if ( (tabe[i - 3][j + 3] == 1) && ( (i - 3) >= 0) &&
( (j + 3) < 10)) {
a = true;
return (a);

}
}

else if (tabe[i][j] == 2) {

if ( (tabe[i + 1][j] == 2) && ( (i + 1) < 10))
if ( (tabe[i + 2][j] == 2) && ( (i + 2) < 10))
if ( (tabe[i + 3][j] == 2) && ( (i + 3) < 10)) {
a = true;
return (a);

}

if ( (tabe[i + 1][j + 1] == 2) && ( (i + 1) < 10) && ( (j + 1) < 10))
if ( (tabe[i + 2][j + 2] == 2) && ( (i + 2) < 10) && ( (j + 2) < 10))
if ( (tabe[i + 3][j + 3] == 2) && ( (i + 3) < 10) &&
( (j + 3) < 10)) {
a = true;
return (a);

}

if ( (tabe[i][j + 1] == 2) && ( (j + 1) < 10))
if ( (tabe[i][j + 2] == 2) && ( (j + 2) < 10))
if ( (tabe[i][j + 3] == 2) && ( (j + 3) < 10)) {
a = true;
return (a);


}

if ( (tabe[i - 1][j + 1] == 2) && ( (i - 1) >= 0) && ( (j + 1) < 10))
if ( (tabe[i - 2][j + 2] == 2) && ( (i - 2) >= 0) && ( (j + 2) < 10))
if ( (tabe[i - 3][j + 3] == 2) && ( (i - 3) >= 0) &&
( (j + 3) < 10)) {
a = true;
return (a);


}
}

return(a);
}

}
return (a);// en rajoutant celui-ci j'arrive a compiler....
}



public void actionPerformed(ActionEvent e)
{

if(e.getSource()==nouveau)nouveauJeu();
if(e.getSource()==quitter)System.exit(0);
if(e.getSource()==apropos)
JOptionPane.showMessageDialog(null,"Crée le 13/09/2004\n by Nicolas POLMAN\nDESS CCI ","MORPION",JOptionPane.INFORMATION_MESSAGE);

for(int k=0;k<100;k++)
if(e.getSource()==bouton[k])
{
if(tab[k]==false)
{
tab[k]=true;
int i,j;

j=k%10;
i=((k-j)/10);

if(qui==false)
{
setTitle("Joueur O");
bouton[k].setIcon(iconX);


tabe[i][j]=1;
}
else
{
setTitle("Joueur X");
bouton[k].setIcon(iconO);
tabe[i][j]=2;
}
if(verifie()==true)
{ if(qui==true)
JOptionPane.showMessageDialog(null,messageO,"Gagné",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,messageX,"Gagné",JOptionPane.INFORMATION_MESSAGE);

if(JOptionPane.showConfirmDialog(null,"Vous voulez vous rejouer", "MORPION", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
nouveauJeu();
else
System.exit(0);
}
qui=!qui;
}
else
JOptionPane.showMessageDialog(null,"S.V.P choisissez une autre case.","Erreur",JOptionPane.ERROR_MESSAGE);

}
}





public static void main(String []args)
{
new jeu();
}
}

mercredi 15 septembre 2004 à 01:26:44 | Re : comprends pas mon erreur au morpion 10*10

GodConan

Réponse acceptée !

GodConan


deja que tu fai une boucle sur un index en commencan par le 0 evite ;o) d ecrire index - x ( i-1) car cela provoque une exception
"array out of bounds" (pour l eviter il te faut faire le test de limite avant et non apres... ;o) ), et tu peu simplifier tous ces test ;o) ca les rendrai plus clair .... par exemple par l appell d une methode comme : public boolean testLigne( Point positionDepart, int directionX, int directionY )
{
// ligne calculer en focntion des argument de la methode ;o)
if ligne return true;
else return false;
}




Cette discussion est classé dans : fichier, barre, déclaration, joueur, joptionpane


Répondre à ce message

Sujets en rapport avec ce message

pb a la compilation [ par fatcat ] salut a tousVoila mon petit pb j ai codé le jeu du morpion et quand je lance la compilation j ai cette erreur:is not abstract and does not override ab Entree sortie avec fichier [ par oncle jules ] Salut à tous un dimanche après midi à nice et moi je fais du java <IMG alt=Mad src="http://www.developpez.be/forums/images/smiles Barre de progression pour Téléchargement [ par MdcPhoenix ] Bonjour à tous, je vous présente mon problème.Je voudrai savoir comment afficher la progression d'un téléchargement client / serveur grâce à des socke Thread et JFrame [ par cerco2 ] bonjour,je vous remerci d'abord pour m'avoir aidé aussi rapidement pour mon premier topic sur le forum.actuellment j'ai un autre problème, toujours av Problème d'écriture supplémentaire lors d'un couper coller en java [ par beberto56 ] Bonjour excusez moi mais la je suis bloqué,J'ai créé un programme qui execute automatiquement un couper coller entre deux répertoires de la même racin déclaration d'une fonction dans un fichier java [ par moooonaaaa ] Salem, j'ai besoin de faire une fonction dans un fichier .java mais cette fonction ne fait pas partie de la classe. cette fonction me permet de retour problème avec JOptionPane [ par zut69 ] Bonsoir,J'ai un souci avec un bouton parcourir. Dans l'applet viewer pas de soucis, il s'affiche et tout s'exécute correctement mais par contre quand


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.