begin process at 2012 02 11 14:09:36
  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 ajout d'un sous menu de selection ficher en java [ par espoirsh ] bjr tous le monde g créer une fenetre qui contient un menu(fichier) et un sous menu(ajouter), quand je clique sur ajouter une autre fenetre est ouvert


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,669 sec (4)

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