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

avec Java Discussion :

Echiquier en Java


Sujet :

avec Java

  1. #181
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    La même erreur...

  2. #182
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    La même erreur...
    c'est normal, je t'ai fait seulement afficher la stackTrace de l'erreur en plus pour savoir c'est quoi l'erreur

    c'est quoi donc cette trace ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #183
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Je n'ai que :
    "Impossible de charger la partie"

  4. #184
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    je t'ai dit que j'aurais dû déclarer plateau de type Piece[][] au lieu de Case[][]

    j'ai du avoir ça à l'esprit quand j'ai écrit ça cette nuit (petite fatigue passagère )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // c'est un roque,il faut aussi bouger la tour
    if ( deplacementX<0 ) {
    	// deplacement vers la gauche
    	plateau[coup.arrivee.getColonne()+1][coup.arrivee.getLigne()]=
    		plateau[0][coup.arrivee.getLigne()];
    	plateau[0][coup.arrivee.getLigne()]=null;
    }
    else {
    	// deplacement vers la droite
    	plateau[coup.arrivee.getColonne()-1][coup.arrivee.getLigne()]=
    		plateau[7][coup.arrivee.getLigne()];
    	plateau[7][coup.arrivee.getLigne()]=null;
    }
    en fait il faut manipuler les pièces dans les cases ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // c'est un roque,il faut aussi bouger la tour
    if ( deplacementX<0 ) {
    	// deplacement vers la gauche
    	plateau[coup.arrivee.getColonne()+1][coup.arrivee.getLigne()].setPiece(
    		plateau[0][coup.arrivee.getLigne()].getPiece());
    	plateau[0][coup.arrivee.getLigne()].setPiece(null);
    }
    else {
    	// deplacement vers la droite
    	plateau[coup.arrivee.getColonne()-1][coup.arrivee.getLigne()].setPiece(
    			plateau[7][coup.arrivee.getLigne()].getPiece());
    	plateau[7][coup.arrivee.getLigne()].setPiece(null);
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #185
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    Je n'ai que :
    "Impossible de charger la partie"
    tu as bien ajouté

    catch (IOException e) {
    e.printStackTrace();
    JOptionPane.showMessageDialog(this, "Impossible de charger la partie", "Erreur", JOptionPane.ERROR_MESSAGE);
    }

    ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #186
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Ah oui j'ai pas regardé la console d'eclispe :
    en rouge les erreurs :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	private Piece decodePiece(byte code, Position position, int couleur, Case[][] plateau) throws IOException {
    			Piece piece = plateau[position.getColonne()][position.getLigne()].getPiece();
    			byte codepiece = getCodePiece(piece);
    			byte codecouleur = getCodeCouleur(couleur==1);
    			if (codepiece==code && codecouleur==getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(piece.getCouleur()))) return piece;
    			throw new IOException();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void decode(byte[] data, Case[][] plateau) throws IOException {
    			// on vérifie le tableau data
    			if ( data!=null && data.length>0 && data.length<8 ) {
    				couleur=decodeToCouleur(data[0]);
    				depart=new Position(decode(data[2]),decode(data[3]));
    				arrivee=new Position(decode(data[4]),decode(data[5]));
    				piecejouee=decodePiece(data[1],depart,data[0],plateau);
    				pieceprise=decodePiece(data[6],arrivee,1-data[0],plateau);
    			}
    			else {
    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
    try {
    			input=new BufferedInputStream(new FileInputStream(file));//on utilise un stream bufferisé pour ne pas a se soucier des octes
     
    			// on parcourt le fichier, 
    			int read;
    			while ( (read=input.read(data))!=-1 ) {
    				if ( read<7 ) {
    					// pas assez de données lu
    					throw new IOException();
    				}
    				Coup coup = new Coup();
    				coup.decode(data, plateau);
    				coupsjoues.add(coup);
    				// on joue virtuellement le coup
    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
    public void load() {
    		JFileChooser filechooser = new JFileChooser();
    		filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    		filechooser.setFileFilter( new FileNameExtensionFilter(
    		        "Partie de Jeu d'echec", "rcl", "rcl"));
     
    		int returnVal = filechooser.showOpenDialog(this);
    	    if (returnVal == JFileChooser.APPROVE_OPTION) {
     
    	    	File file=filechooser.getSelectedFile(); 
    	    	try {
      	    	PartieChargee partieChargee = Partie.load(file);
      	    	// on met à jour l'interface graphique a partir de partieChargée
     
      	    	Coup dernierCoupJoue=Partie.getDernierCoupJoue();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPerformed(ActionEvent paramActionEvent) {
    				load();
    			}
    		});

    Merci

  7. #187
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    Ah oui j'ai pas regardé la console d'eclispe :
    en rouge les erreurs :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	private Piece decodePiece(byte code, Position position, int couleur, Case[][] plateau) throws IOException {
    			Piece piece = plateau[position.getColonne()][position.getLigne()].getPiece();
    			byte codepiece = getCodePiece(piece);
    			byte codecouleur = getCodeCouleur(couleur==1);
    			if (codepiece==code && codecouleur==getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(piece.getCouleur()))) return piece;
    			throw new IOException();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void decode(byte[] data, Case[][] plateau) throws IOException {
    			// on vérifie le tableau data
    			if ( data!=null && data.length>0 && data.length<8 ) {
    				couleur=decodeToCouleur(data[0]);
    				depart=new Position(decode(data[2]),decode(data[3]));
    				arrivee=new Position(decode(data[4]),decode(data[5]));
    				piecejouee=decodePiece(data[1],depart,data[0],plateau);
    				pieceprise=decodePiece(data[6],arrivee,1-data[0],plateau);
    			}
    			else {
    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
    try {
    			input=new BufferedInputStream(new FileInputStream(file));//on utilise un stream bufferisé pour ne pas a se soucier des octes
     
    			// on parcourt le fichier, 
    			int read;
    			while ( (read=input.read(data))!=-1 ) {
    				if ( read<7 ) {
    					// pas assez de données lu
    					throw new IOException();
    				}
    				Coup coup = new Coup();
    				coup.decode(data, plateau);
    				coupsjoues.add(coup);
    				// on joue virtuellement le coup
    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
    public void load() {
    		JFileChooser filechooser = new JFileChooser();
    		filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    		filechooser.setFileFilter( new FileNameExtensionFilter(
    		        "Partie de Jeu d'echec", "rcl", "rcl"));
     
    		int returnVal = filechooser.showOpenDialog(this);
    	    if (returnVal == JFileChooser.APPROVE_OPTION) {
     
    	    	File file=filechooser.getSelectedFile(); 
    	    	try {
      	    	PartieChargee partieChargee = Partie.load(file);
      	    	// on met à jour l'interface graphique a partir de partieChargée
     
      	    	Coup dernierCoupJoue=Partie.getDernierCoupJoue();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPerformed(ActionEvent paramActionEvent) {
    				load();
    			}
    		});

    Merci
    et l'erreur c'est quoi ? donne moi la stackTrace
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #188
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    java.io.IOException
    at projet.Partie$Coup.decodePiece(Partie.java:144)
    at projet.Partie$Coup.decode(Partie.java:131)
    at projet.Partie.load(Partie.java:254)
    at projet.FenetreJeu.load(FenetreJeu.java:512)
    at projet.FenetreJeu$4.actionPerformed(FenetreJeu.java:219)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  9. #189
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    et l'erreur c'est quoi ? donne moi la stackTrace
    ah non excuses moi j'avais pas vu que tu m'avais mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	private Piece decodePiece(byte code, Position position, int couleur, Case[][] plateau) throws IOException {
    			Piece piece = plateau[position.getColonne()][position.getLigne()].getPiece();
    			byte codepiece = getCodePiece(piece);
    			byte codecouleur = getCodeCouleur(couleur==1);
    			if (codepiece==code && codecouleur==getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(piece.getCouleur()))) return piece;
    			throw new IOException();
    donc l'erreur c'est que soit la pièce est mal décodée, soit la couleur est mal décodée (ou mal encodée d'ailleurs)
    il y'a déjà un petit problème dans cette ligne : si la piece est null :

    donc il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (codepiece==code && (codepiece==0 || codecouleur==getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(piece.getCouleur())))) return piece;
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #190
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Pourtant j'ai tout :


    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
    98
    public static class Coup {
    		private String couleur;
    		private Piece piecejouee;
    		private Position depart, arrivee;
    		private Piece pieceprise;
     
    		public String getCouleur() {
    			return couleur;
    		}
     
    		public Piece getPieceJouee() {
    			return piecejouee;
    		}
     
    		public Position getDepart() {
    			return depart;
    		}
     
    		public Position getArrivee() {
    			return arrivee;
    		}
     
    		public Piece getPiecePrise() {
    			return pieceprise;
    		}
    		public byte[] encode(){
    			byte[] data=new byte[7];// on créé un tableau de 7 octets
    			data[0]=getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(couleur));//couleur 
    			data[1]=getCodePiece(piecejouee); // code piece
    			data[2]=getCode(depart.getColonne()); // colonne départ
    			data[3]=getCode(depart.getLigne()); // ligne départ
    			data[4]=getCode(arrivee.getColonne()); // colonne arrivée
    			data[5]=getCode(arrivee.getLigne()); // ligne arrivée
    			data[6]=getCodePiece(pieceprise); // code piece
    			return data;
    		}
    		private byte getCodeCouleur(boolean blanc) {
    			return (byte) (blanc?1:0); // 1 = blanc, 0 = noir
    		}
    		private byte getCode(int value) {
    			return (byte) value;
    		}
    		private byte getCodePiece(Piece piecejouee) {
    			if ( piecejouee instanceof Roi ) {
    				return 'R'; 
    			}
    			else if ( piecejouee instanceof Reine ) {
    				return 'D'; 
    			}
    			else if ( piecejouee instanceof Tour ) {
    				return 'T'; 
    			}
    			else if ( piecejouee instanceof Fou ) {
    				return 'F'; 
    			}
    			else if ( piecejouee instanceof Cavalier ) {
    				return 'C'; 
    			}
    			else if ( piecejouee instanceof Pion ) {
    				return 'P'; 
    			}
    			return 0; // pas de pièce
    		}
    		public void decode(byte[] data, Case[][] plateau) throws IOException {
    			// on vérifie le tableau data
    			if ( data!=null && data.length>0 && data.length<8 ) {
    				couleur=decodeToCouleur(data[0]);
    				depart=new Position(decode(data[2]),decode(data[3]));
    				arrivee=new Position(decode(data[4]),decode(data[5]));
    				piecejouee=decodePiece(data[1],depart,data[0],plateau);
    				pieceprise=decodePiece(data[6],arrivee,1-data[0],plateau);
    			}
    			else {
    				throw new IOException();
    			}
    		}
     
    		private Piece decodePiece(byte code, Position position, int couleur, Case[][] plateau) throws IOException {
    			Piece piece = plateau[position.getColonne()][position.getLigne()].getPiece();
    			byte codepiece = getCodePiece(piece);
    			byte codecouleur = getCodeCouleur(couleur==1);
    			if (codepiece==code && (codepiece==0 || codecouleur==getCodeCouleur(FenetreJeu.COULEUR_JOUEUR_BLANC.equals(piece.getCouleur())))) return piece;
    			throw new IOException();
    		}
     
    		private int decode(byte value) throws IOException {
                if ( value>=0 && value<8 ) {
                	return value;
                }
    			throw new IOException();
    		}
     
    		private String decodeToCouleur(byte code) throws IOException {
    			if ( code==1 ) return FenetreJeu.COULEUR_JOUEUR_BLANC;
    			else if ( code==0 ) return FenetreJeu.COULEUR_JOUEUR_NOIR;
    			else throw new IOException();
    		}
    	}

  11. #191
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    Pourtant j'ai tout :
    oui, oui, c'est moi qui avait cette erreur, mais ça ne corrige pas notre problème c'est une autre erreur,
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #192
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Si vous ne trouvez pas , ce n'est pas grave..
    Si on termine l'échec et mat on y reviendra sinon tempis..

    C'est déjà énorme où on en es arrivé en moins d'une semaine..

  13. #193
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    Si vous ne trouvez pas , ce n'est pas grave..
    Si on termine l'échec et mat on y reviendra sinon tempis..

    C'est déjà énorme où on en es arrivé en moins d'une semaine..
    j'ai testé unitairement le codage et le décodage c'est bon

    le problème doit être dans la simulation de jeu,

    faut que je sorte là je me repencherai la dessus plus tard : renvoit moi éventuellement tout le code que tu as, que je reparte sur une base solide, et le fichier de sauvegarde que tu as fait et que tu n'arrives pas à recharger

    pour l'echec et mat je t'ai donné déjà toute les règles, tu dois pouvoir commencer
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #194
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    ah oui j'oubliais j'ai oublié l'initialisation du plateau dans load(File) de Partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Case[][] plateau = new Case[8][8];
    //initialisation des case
    for(int colonne=0;colonne<8;colonne++) {
      for(int ligne=0;ligne<8;ligne++) {
        plateau[colonne][ligne]=new Case();
      }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #195
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Je viens de modifier et j'ai toujours les mêmes erreurs.
    Je vous ai joint les fichiers.



    Merci

  16. #196
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    bon j'ai corrigé le problème : c'était le jeu virtuel qui était mal initialisé

    j'ai un peu nettoyer le code pour que ça soit plus simple parce qu'il y avait plein de petit bug, lorsqu'on recommençait une partie, ou qu'on chargeait plusieurs parties,

    j'ai fait différent test de partie, je dis pas qu'il y a plus de bugs (c'est impossible à le savoir), j'ai pas tout retester, il faudrait tester une sauvegarde et un chargement de partie avec roque par exemple, avec echec au roi.

    pour ce soir j'en ai un peu marre, je m'arrête là. je verrai plus tard pour la suite. je ferai plus de tests de sauvegarde/chargement, et je verrai pour le mat
    Fichiers attachés Fichiers attachés
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #197
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Du grand art...
    Merci beaucoup !

    Je vais continuer l'échec et mat .

    Bonne soiréee
    Merci

  18. #198
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 139
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    on peut aussi en plus détecter l'echec et mat sans être obligé de prendre le roi le coup d'après en ajoutant un petit bout de code qui consiste
    1) à faire la même chose que pour l'echec mais pour toutes les cases libres à coté du roi
    2) à tester si une autre pièce de la couleur du joueur menacé ne peut pas aller sur une des cases menacées (celles qu'on a détecté dans le test pour l'echec) : on peut le faire en mémorisant par exemple les cases détectées lors du test dans une liste, puis en parcourant toutes les cases qui ont une pièce de la couleur jouée, en simulant le déplacement entre ces cases et les cases de la liste, et si l'un valide deplacement.estValide() && e.cheminPossible(deplacement), ily a pas mat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void marqueRoiEchec() {
    		Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		for(int colonne=0; colonne<8;colonne++) {
    		    for(int ligne=0; ligne<8;ligne++) {
    		        if (e.getCase(colonne,ligne).estOccupe(couleurAdverse)){
    		        	Deplacement simuleDeplacementEchec=new Deplacement(new Position(colonne, ligne),positionRoiJoue);
    		        		if ((e.getCase(colonne,ligne).getPiece().estValide(simuleDeplacementEchec) && e.cheminPossible(simuleDeplacementEchec)) || e.captureParUnPionPossible(simuleDeplacementEchec)){
    		        			tab[positionRoiJoue.getColonne()][positionRoiJoue.getLigne()].setCoupPossible(CoupPossible.echec);
    		        		}
    		        }
    		    }
    		}
    Il faudrait repérer la place du roi et regarder autour de lui s'il peux encore bougé non ?

    J'ai peu être pas compris alors...
    J'ai oublié de précisé , j'ai du apprendre a jouer pour faire ce projet

  19. #199
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jordan62 Voir le message
    Il faudrait repérer la place du roi et regarder autour de lui s'il peux encore bougé non ?
    oui, mais ce n'est pas tout
    Citation Envoyé par Jordan62 Voir le message
    J'ai peu être pas compris alors...
    je t'ai déjà expliqué :
    1) le roi est en echec et mat, si il est en echec, et que si il bouge il reste en echec
    2) mais si on peut bouger une pièce de manière à ce que le roi ne soit plus en echec, il n'y a pas mat

    Citation Envoyé par Jordan62 Voir le message
    J'ai oublié de précisé , j'ai du apprendre a jouer pour faire ce projet
    c'est sur que ça aide de connaitre les règles de gestion qu'on doit implémenter

    voilà un canevas pour t'aider :
    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
    public boolean marqueRoiEchec() {
    		boolean mat=false;
    		Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		List<Deplacement> menaceechec=new ArrayList<Deplacement>();
    		for(int colonne=0; colonne<8;colonne++) {
    		    for(int ligne=0; ligne<8;ligne++) {
    		        if (e.getCase(colonne,ligne).estOccupe(couleurAdverse)){
    		        	Deplacement simuleDeplacementEchec=new Deplacement(new Position(colonne, ligne),positionRoiJoue);
    		        		if ((e.getCase(colonne,ligne).getPiece().estValide(simuleDeplacementEchec) && e.cheminPossible(simuleDeplacementEchec)) || e.captureParUnPionPossible(simuleDeplacementEchec)){
    		        			tab[positionRoiJoue.getColonne()][positionRoiJoue.getLigne()].setCoupPossible(CoupPossible.echec);
                                menaceechec.add(simuleDeplacementEchec);
    		        		}
    		        }
    		    }
    		}
    		if ( !menaceechec.isEmpty() ) {
    			// le roi est en echec
    			// si le roi peut bouger vers une case non menacée, il n'est pas mat
    			// ... faire ce test ici (facile)
    			if ( menaceechec.size()==1 ) {
    				// une seule pièce menace le roi
    				// si cette pièce peut être mangé par une pièce du joueur courant, alors il n'y a pas echec et mat
                    // ... faire ce test (facile)
    				// sinon si une pièce du joueur en echec peut bloquer la pièce qui menace le roi n'est pas amt
    				// ... faire ce test (moins facile)
    			}
    			else {
    				// si une pièce du joueur en echec peut se placer (ou prendre une pièce adverse) de manière à ce que le roi
    				// ne soit plus en echec, il n'a pas mat
    				// ... faire ce test (le plus complexe des tests à faire)
    			}
    		}
     
    		return mat;
    	}
    commence par les faciles evidemment
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  20. #200
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    voici de quoi t'avancer un petit peu :

    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
    	public boolean marqueRoiEchec() {
    		boolean mat=false;
    		Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		List<Deplacement> menaceechec=chercheEchec(positionRoiJoue, couleurAdverse);
    		if ( !menaceechec.isEmpty() ) {
    			// le roi est en echec
    			// il est possiblement mat
    			mat=true;
    			Roi roi=(Roi) e.getCase(positionRoiJoue).getPiece();
    			// si le roi peut bouger vers une case non menacée, il n'est pas mat
    			for(int dx=-1; dx<=-1; dx++) {
    				for(int dy=-1; dy<=-1; dy++) {
    					Position nouvellePositionRoi=positionRoiJoue.position(dx, dy);
    					if (nouvellePositionRoi.getColonne()<0 || nouvellePositionRoi.getColonne()>7 
    							|| nouvellePositionRoi.getLigne()<0 || nouvellePositionRoi.getLigne()>7 ) {
    						// on est en dehors de l'echiquier, on ignore
    						continue;
    					}
    					Deplacement simuleDeplacementRoi=new Deplacement(positionRoiJoue, nouvellePositionRoi);
    					if ( roi.estValide(simuleDeplacementRoi) && e.cheminPossible(simuleDeplacementRoi) && !e.captureParUnPionPossible(simuleDeplacementRoi)) {
    						List<Deplacement> menaceechecnouvelleposition=chercheEchec(nouvellePositionRoi, couleurAdverse);
    						if ( menaceechecnouvelleposition.isEmpty() ) {
    							// il y a au moins une case vers laquelle le roi peut se déplacer
    							// il n'y a pas mat
    							mat=false;
    							break; // c'est pas la peine de continuer à chercher
    						}
    					}
    				}	
    			}
                            if ( mat ) {
                              // on n'est pas encore sur que le roi n'est pas mat
    			if ( menaceechec.size()==1 ) {
    				// une seule pièce menace le roi
    				// si cette pièce peut être mangé par une pièce du joueur courant, alors il n'y a pas echec et mat
                    // ... faire ce test (facile)
    				// sinon si une pièce du joueur en echec peut bloquer la pièce qui menace le roi n'est pas amt
    				// ... faire ce test (moins facile)
    			}
    			else {
    				// si une pièce du joueur en echec peut se placer (ou prendre une pièce adverse) de manière à ce que le roi
    				// ne soit plus en echec, il n'a pas mat
    				// ... faire ce test (le plus complexe des tests à faire)
    			}
    }
    		}
     
    		return mat;
    	}
     
    	private List<Deplacement> chercheEchec(Position positionRoiJoue, Couleur couleurAdverse) {
    		List<Deplacement> menaceechec=new ArrayList<Deplacement>();
    		for(int colonne=0; colonne<8;colonne++) {
    		    for(int ligne=0; ligne<8;ligne++) {
    		        if (e.getCase(colonne,ligne).estOccupe(couleurAdverse)){
    		        	Deplacement simuleDeplacementEchec=new Deplacement(new Position(colonne, ligne),positionRoiJoue);
    		        		if ((e.getCase(colonne,ligne).getPiece().estValide(simuleDeplacementEchec) && e.cheminPossible(simuleDeplacementEchec)) || e.captureParUnPionPossible(simuleDeplacementEchec)){
    		        			tab[positionRoiJoue.getColonne()][positionRoiJoue.getLigne()].setCoupPossible(CoupPossible.echec);
                                menaceechec.add(simuleDeplacementEchec);
    		        		}
    		        }
    		    }
    		}	
    		return menaceechec;
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 21h17
  2. Envoi de Datagrames par IP en JAVA
    Par the java lover dans le forum Développement
    Réponses: 2
    Dernier message: 14/08/2002, 12h44
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 20h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 25/05/2002, 00h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 13h48

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