on continue ?
procédons par étape :
étape 1 : permettre au roi de se déplacer de 2 cases
dans la classe Roi, on va modifier la méthode estValide
on va traiter le déplacement de 2 cases en imaginant que l'échiquier ne contient que le roi : on ne peut pas faire autrement, puisqu'on a pas accès à l'échiquier, donc on ne peut rien connaitre des autres pièces
donc j'ajoute au test de validation du déplacement le cas du déplacement de 2 cases du roi à partir de sa position de départ (ici en rouge)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public boolean estValide(Deplacement deplacement) {
//le deplacement du roi ressemble a celui de la reine sauf qu'il se deplacement seulement d'une seul et unique case donc nous allons prendre les regles de la reine mais tout mettre inferieur ou egal a 1
// on traite le roque
if ( !aDejaEteDeplaceUneFois() ) {
// le roque n'est possible que si le roi n'a jamais été déplacé
if ( deplacement.getDeplacementY()==0 ) {
// le roque est horizontal
if ( Math.abs(deplacement.getDeplacementX())==2 ) {
// lors du roque le roi se déplace de 2 cases
return true;
}
}
}
return Math.abs(deplacement.getDeplacementX()) * Math.abs(deplacement.getDeplacementY()) <= 1
&& Math.abs(deplacement.getDeplacementX()) - Math.abs(deplacement.getDeplacementY()) <= 1
&& Math.abs(deplacement.getDeplacementX()) - Math.abs(deplacement.getDeplacementY()) >= -1
&& !deplacement.isNul();
} |
si tu fais le test en l'état tu verras que le roi peut se déplacer de 2 cases horizontalement à partir de sa case de départ
bien sur cela ne fait pas encore un roque
tu verras que la règle cheminPossible marche déjà partiellement puisqu'elle empêche le roi de sauter des pièces
maintenant il s'agit de modifier cheminPossible pour qu'on ne puisse faire ce déplacement de 2 cases que dans les conditions valables pour un roque