begin process at 2010 02 09 19:00:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

comprends pas mon erreur au morpion 10*10


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comprends pas mon erreur au morpion 10*10

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ée 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 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 déplacement et récupération de focus [ par harleen ] Bonjour à tous,Après recherche google et sur pas mal de forums Java, je fais appel à votre aide, car je rencontre pas mal de difficultés concernant de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales