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. #201
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		ArrayList<Deplacement> menaceechec=new ArrayList<Deplacement>();
    Eclispe m'a fait remplacer par cela...


    Merci

  2. #202
    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 : 55
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		ArrayList<Deplacement> menaceechec=new ArrayList<Deplacement>();
    Eclispe m'a fait remplacer par cela...


    Merci
    c'est parce qu'il y avait un import java.awt.List qui ne servait à rien, alors qu'il faut un import java.util.List.
    vire l'import java.awt.List et met java.util.List et tu pourra remettre List<Deplacement>

    y'avait d'autres petites erreurs que j'ai corrigées depuis : reprend la dernière version dans le forum ce sera mieux
    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. #203
    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
    Merci,
    C'est frustrant de ce dire que même la méthode facile , je n'y arrive guère!

  4. #204
    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 : 55
    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
    Merci,
    C'est frustrant de ce dire que même la méthode facile , je n'y arrive guère!
    regarde bien : on a fait ce genre de chose (plus ou moins) plusieurs fois déjà :

    bon moi j'ai fait un raccourci pour aller plus vite (mais si tu avais repris un code qu'on a déjà fait plusieurs fois, par exemple pour marquer les coupPossible, tu aurais simplement balayer tout l'echiquier, et simuler le déplacement du roi vers chacune de ces cases, tester estValide, cheminPossible , etc... comme d'hab

    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
    	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++) {
                                            if ( dx==0 && dy==0 ) continue; // le roi ne bouge pas
    					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 && 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
                    // on cherche si une pièce peut prendre la pièce
    				if ( peutEtrePrise(menaceechec.get(0).getDepart())) {
    					// la pièce qui menace le roi peut être prise
    					mat=false;
    				}
    				else {
    				// 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 boolean peutEtrePrise(Position positionPiece) {
    		Piece piece=e.getCase(positionPiece).getPiece();
    		if (piece==null) return false;// pas de pièce sur la position
    		Couleur couleurAdverse=piece.getCouleur().couleurAdverse();
    		for(int colonne=0; colonne<8;colonne++) {
    		    for(int ligne=0; ligne<8;ligne++) {
    		        if (e.getCase(colonne,ligne).estOccupe(couleurAdverse)){
    		        	Deplacement simuleDeplacement=new Deplacement(new Position(colonne, ligne),positionPiece);
    	        		if ((e.getCase(colonne,ligne).getPiece().estValide(simuleDeplacement) && e.cheminPossible(simuleDeplacement)) || e.captureParUnPionPossible(simuleDeplacement)){
                            return true;
    	        		}
    		        }
    		    }
    		}	
    		return false;
    	}
     
    	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.

  5. #205
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(e.getPiece().getCouleur()!=(couleurControle)){
    				// 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)
    					}
    La piece adverse est modélisé comment ?

    Merci

  6. #206
    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 : 55
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(e.getPiece().getCouleur()!=(couleurControle)){
    				// 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)
    					}
    La piece adverse est modélisé comment ?

    Merci
    oui tu peux faire comme ça (sauf que Echiquier.getPiece() n'existe pas)

    sinon j'ai fait une méthode couleurAdverse() : donc tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    piece.getCouleur().couleurAdverse()==couleurControle)


    sinon j'ai encore un peu plus avancé :

    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
    Deplacement deplacementMenace=menaceechec.get(0);
    					if ( peutEtrePrise(deplacementMenace.getDepart())) {
    						// la pièce qui menace le roi peut être prise
    						mat=false; 
    					}
    					else {
    						// sinon si une pièce du joueur en echec peut bloquer la pièce qui menace le roi n'est pas amt
    						if ( !(e.getCase(deplacementMenace.getDepart()).getPiece() instanceof Cavalier) ) {
    							// un cavalier ne peut etre bloqué
    							if ( !(Math.abs(deplacementMenace.getDeplacementX())<=1 && 
    									Math.abs(deplacementMenace.getDeplacementY())<=1) ) {
    								// un déplacement de une case ne peut etre bloquée
    								// ... maintenant il faut simuler un déplacement de toutes les pièces autre que le roi vers toutes les cases du déplacement
    								// et vérifier que ce déplacement est possible : s'il y en a un seul, alors mat=false
    								// pour nous aider on va faire une méthode qui nous donne la liste de toutes les cases
    								// ...
    							}
    						}
    					}
    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.

  7. #207
    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 : 55
    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
    on peut encore améliorer :

    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
    			for(int dx=-1; dx<=1; dx++) {
    				for(int dy=-1; dy<=1; dy++) {
    					if ( dx==0 && dy==0 ) continue; // pas de déplacement
    					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;
    					}
    					if ( e.getCase(nouvellePositionRoi).estOccupe(roi.getCouleur()) ) {
    						// on peut éliminer aussi : la case est occupée par une pièce de même couleur que le roi
    						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
    						}
    					}
    				}	
    			}
    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. #208
    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
    Merci ,
    if(Piece.getCouleur().couleurAdverse()==couleurControle))

    GetCouleur pose problème...

  9. #209
    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 : 55
    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
    Merci ,
    if(Piece.getCouleur().couleurAdverse()==couleurControle))

    GetCouleur pose problème...
    oui Piece est nom de classe, donc Piece.getCouleur() serait une méthode statique de cette classe, qui n'existe pas

    il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Piece piece= ... quelque chose qui détermine une pièce qu'on veut traiter... je ne sais pas laquelle tu veux traiter...
    if ( piece.getCouleur().couleurAdverse()==couleurControl )...
    il faut que tu acquières certains reflexes en java

    quand je mets un extrait de code dans le post pour donner un exemple ce n'est pas à copier/coller et ça marche tout seul : il faut comprendre l'exemple, regarder quel contexte (la question à laquelle je réagis, mais aussi le code déjà écrit) :

    Citation Envoyé par joel.drigo Voir le message
    sinon j'ai fait une méthode couleurAdverse() : donc tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    piece.getCouleur().couleurAdverse()==couleurControle)
    déjà ici c'est piece et pas Piece ; en plus tu peux voir rapidement que getCouleur() n'est pas statique donc ce n'est pas un appel sur la classe : en plus ça n'aurait aucun sens : on veut la couleur d'une pièce en particulier pas de la classe Piece (ce serait quoi la couleur de la classe d'ailleurs ?)
    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. #210
    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 : 55
    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 la méthode qui va nous aider à savoir si on peut bloquer un déplacement de prise de roi,

    attention : elle ne fonctionne pas pour le cavalier, mais de toute manière un cavalier ne peut être bloqué

    cette méthode est à ajouter à la classe Deplacement :

    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
    public Position[] getPositions() {
    		int dx = (int) Math.signum(deplacementX);
    		int dy = (int) Math.signum(deplacementY);
    		List<Position> positions = new ArrayList<Position>();
    		if ( dx==0 && dy==0 ) {
    			positions.add(depart);//par précaution
    		}
    		else {
    			Position position = depart;
    			while (true) {
    				positions.add(position);
    				position = position.position(dx, dy);
    				if (dx < 0 && position.getColonne() < arrivee.getColonne()) {
    					break;
    				}
    				if (dx > 0 && position.getColonne() > arrivee.getColonne()) {
    					break;
    				}
    				if (dy > 0 && position.getLigne() > arrivee.getLigne()) {
    					break;
    				}
    				if (dy < 0 && position.getLigne() < arrivee.getLigne()) {
    					break;
    				}
    			}
    		}
    		return positions.toArray(new Position[positions.size()]);
    	}
    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.

  11. #211
    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 : 55
    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
    on continue :

    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
    	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++) {
    					if ( dx==0 && dy==0 ) continue; // pas de déplacement
    					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;
    					}
    					if ( e.getCase(nouvellePositionRoi).estOccupe(roi.getCouleur()) ) {
    						// on peut éliminer aussi : la case est occupée par une pièce de même couleur que le roi
    						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 ) {
    				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
    	                // on cherche si une pièce peut prendre la pièce
    					Deplacement deplacementMenace=menaceechec.get(0);
    					if ( peutEtrePrise(deplacementMenace.getDepart())) {
    						// la pièce qui menace le roi peut être prise
    						mat=false; 
    					}
    					else {
    						// sinon si une pièce du joueur en echec peut bloquer la pièce qui menace le roi n'est pas amt
    						if ( !(e.getCase(deplacementMenace.getDepart()).getPiece() instanceof Cavalier) ) {
    							// un cavalier ne peut etre bloqué
    							if ( !(Math.abs(deplacementMenace.getDeplacementX())<=1 && 
    									Math.abs(deplacementMenace.getDeplacementY())<=1) ) {
    								// un déplacement de une case ne peut etre bloquée
    							    // et vérifier que ce déplacement est possible : s'il y en a un seul, alors mat=false
    								parcourColonnes: for(int colonne=0; colonne<8;colonne++) {
    								    for(int ligne=0; ligne<8;ligne++) {
    								        if (e.getCase(colonne,ligne).estOccupe(couleurControle)){
    								        	// on parcourt toutes les cases du déplacement :
    								        	for(Position pos : deplacementMenace.getPositions() ) {
    									        	Deplacement simuleDeplacement=new Deplacement(new Position(colonne, ligne),pos);
    								        		if ((e.getCase(colonne,ligne).getPiece().estValide(simuleDeplacement) && e.cheminPossible(simuleDeplacement)) ){
    								        			mat=false;
    								        			break parcourColonnes; // pas la peine de continuer
    								        		}
    								        	}
    								        }
    								    }
    								}						
    							}
    						}
    					}
    				}
    				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;
    	}
    il reste la partie la plus complexe à faire, mais en fait il s'agit à priori d'une variante du cas qu'on a déjà fait pour le cas ou on avait qu'un seul déplacement:

    à priori, je pense que si plusieurs pièces menacent le roi, si on prend une les autres continuent à menacer le roi : donc ce cas n'est pas à tester : le roi reste en echec donc le mat continue

    le bloquage : existe t il un cas ou on peut bloquer toutes les pièces qui menacent le roi à la fois en un mouvement ?
    en y réfléchissant vite fait, finalement, il n'y en a peut etre pas : du coup, le cas complexe n'existerait pas et on aurait terminé !

    donc il faut réfléchir à cette question... la nuit étant là pour ça
    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. #212
    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 : 55
    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 viens de me rendre compte d'un cas que j'ai oublié dans le test qui cherche si on met le roi en echec : si le roi prend une pièce (on est en simulation, donc cette pièce reste dans l'echiquier, mais il ne faut pascontinuer àla tester)

    on peut résoudre ce cas en ajoutant une condition sur un déplacement nul : si le roi prend une pièce : le déplacement de cette pièce vers le roi est nul,puisque le roi prend cette pièce (il se retrouve sur la case de cette pièce)

    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
    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 ( !simuleDeplacementEchec.isNul() && (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.

  13. #213
    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 : 55
    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 crois qu'il est impossible que si le roi est en echec par plusieurs pièces adverses, on puisse en un mouvement supprimer la menace

    déjà il y a peut être même pas de cas ou le roi peut etre en echec par plusieurs pièces : en y réfléchissant à part en déplaçant le roi vers une case menacée par plusieurs pièces adverses, je crois pas qu'il y ait de possibilités

    donc à priori, on a tout nos cas

    il suffit maintenant de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( marqueRoiEchec() ) {
      if(JOptionPane.showConfirmDialog(null, "Felicitation vous avez gagne ! Desirez-vous jouer de nouveau ?\n", "Echec et mat!!!", JOptionPane.YES_NO_OPTION) == 0) {
        RAZ();
      }
      else {
        System.exit(0);
      }
    }
    (attention : ne pas le faire sur le cas du chargement, de toute manière on ne pourra jamais sauvegarder une partie après un echec et mat)
    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. #214
    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 : 55
    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
    j'ai fait quelques tests supplémentaires, et il y a un problème qui est du aux tests récursifs qui ne peuvent pas fonctionner car dans ce cas, on ne modifie pas l'echiquier


    je travaille sur une solution et je t'envoie ça
    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. #215
    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 : 55
    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 ça été chaud là

    pour pouvoir tester des mouvements simulés, on est obligé de faire le mouvement simulé, en gros, d'avoir un echiquier modifié

    pour faire ça, sans modifier l'echiquier du jeu j'ai créé une méthode dans la classe Echiquier qui permet d'avoir une copie du jeu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Echiquier copy() {
      Echiquier echiquier = new Echiquier();
      for (int colonne = 0; colonne < 8; colonne++)
        for (int ligne = 0; ligne < 8; ligne++) 
          echiquier.getCase(colonne, ligne).setPiece(getCase(colonne, ligne).getPiece());
      return echiquier;
    }
    et donc il faut modifier nos méthodes de FenetreJeu en conséquence

    plus simple de joindre le source complet plutôt que de copier plein de petits bouts
    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.

  16. #216
    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 : 55
    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
    tiens je t'ai rajouté 2 petits trucs :

    - un message de confirmation quand on recommence une partie déjà commencée

    - l'annulation du dernier coup


    reste plus que le pat
    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. #217
    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
    Waww !


    Merci beaucoup !
    Je vais passer ma journée a me le réexpliquer dans la tete

    Encore merci pour tous.

  18. #218
    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
    Soucis :
    - la reine a fait mat le roi mais il peut encore bougé ...

    - on peut manger le roi

    - J'ai des erreurs ici :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at projet.Deplacement.<init>(Deplacement.java:30)
    at projet.FenetreJeu.chercheEchec(FenetreJeu.java:639)
    at projet.FenetreJeu.marqueRoiEchec(FenetreJeu.java:529)
    at projet.FenetreJeu$GestionnaireEvenement.mouseClicked(FenetreJeu.java:383)
    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)

    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Deplacement(Position depart, Position arrivee)
    	{
    		this.arrivee = arrivee;
    		this.depart = depart;
    		this.deplacementX = arrivee.getColonne() - depart.getColonne();
    		this.deplacementY = arrivee.getLigne() - depart.getLigne();
    	}

    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
    private List<Deplacement> chercheEchec(Echiquier echiquier, 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 (echiquier.getCase(colonne,ligne).estOccupe(couleurAdverse)){
    		        	Deplacement simuleDeplacementEchec=new Deplacement(new Position(colonne, ligne),positionRoiJoue);
    		        		if ( !simuleDeplacementEchec.isNul() && (echiquier.getCase(colonne,ligne).getPiece().estValide(simuleDeplacementEchec) && echiquier.cheminPossible(simuleDeplacementEchec)) || echiquier.captureParUnPionPossible(simuleDeplacementEchec)){
    		        			if ( e==echiquier ) {
    		        				// si c'est l'echiquier principal, on en profite pour marquer les cases
    		        				tab[positionRoiJoue.getColonne()][positionRoiJoue.getLigne()].setCoupPossible(CoupPossible.echec);
    		        			}
                                menaceechec.add(simuleDeplacementEchec);
    		        		}
    		        }
    		    }
    		}	
    		return menaceechec;
    	}


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public boolean marqueRoiEchec() {
    		boolean mat=false;
    		Couleur couleurAdverse=couleurControle.couleurAdverse();
    		Position positionRoiJoue = e.getPosition(Roi.class, couleurControle);
    		List<Deplacement> menaceechec=chercheEchec(e,positionRoiJoue, couleurAdverse);
    		if ( !menaceechec.isEmpty() ) {
    			// le roi est en echec
    			// il est possiblement mat
    			mat=true;
    			Roi roi=(Roi) e.getCase(positionRoiJoue).getPiece();

    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
     	tab[colonne][ligne].setCoupPossible(CoupPossible.prise);
    									      }else if ( e.isRoquePossible(deplacement) ) {
    																	        	tab[colonne][ligne].setCoupPossible(CoupPossible.roque);
    																	        }
    									    else {
    									        tab[colonne][ligne].setCoupPossible(null);
    									    }
    									  } 
    
    									}
    							    marqueRoiEchec();
    
    								
    						  }
    							
    						}
    						else
    						{
    							//je cree un deplacement
    							for (int ligne = 0; ligne < 8; ligne++) {
    								   for (int colonne = 0; colonne < 8; colonne++) {
    								      tab[colonne][ligne].setCoupPossible(null);

    Merci
    Images attachées Images attachées  

  19. #219
    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 : 55
    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 le reproduis pas ce bug. Même si je sauvegarde cette partie et que je la recharge. Même en ayant recommencé plusieurs fois.

    En plus j'ai pas les même numéro de ligne que toi, comme si tu avais modifié le code que je t'ai envoyé : tu as changé quelque chose ?

    D'après ta trace, il y'aurait un cas de positionRoiJoue null.

    Donc il y aurait un problème dans getPosition(Roi.class, couleurControle) : il chercherait le roi sans le trouver

    ça le fait systématiquement à chaque fois que tu fais cette partie ?

    essaye en déboguant ou en traçant de vérifier le contenu de ton echiquier ?

    sinon tu fais peut etre une manip spéciale : tu a bien fait cette partie en F2F4, E7E6, G2G4, D8H4 ?
    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. #220
    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
    sinon tu fais peut etre une manip spéciale : tu a bien fait cette partie en F2F4, E7E6, G2G4, D8H4 ?

    Oui


    J'ai juste mis l'onglet Annuler coup avant terminé , rien de plus.

    Si chez vous sa marche, pouvez vous me renvoyé le fichier s'il vous plais ?

    Merci

+ 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, 20h17
  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, 11h44
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  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: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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