Construction fonction enEchec() et en echecEtMat() (pas fini)

pas encore fonctionnelle
This commit is contained in:
Manon 2019-05-12 21:43:29 +02:00
parent 6ea7261f3c
commit cbc301bcd0
5 changed files with 176 additions and 25 deletions

View File

@ -49,11 +49,11 @@ public class Echiquier {
private Fou FouN1 = new Fou("Noir","FN",new Position(3,8));
private Fou FouN2 = new Fou("Noir","FN",new Position(6,8));
private Reine ReineB1 = new Reine("Blanc","RB",new Position(4,1));
private Reine ReineN1 = new Reine("Noir","RN",new Position(4,8));
private Reine ReineB1 = new Reine("Blanc","RB",new Position(5,1));
private Reine ReineN1 = new Reine("Noir","RN",new Position(5,8));
private Roi RoiB1 = new Roi("Blanc","KB",new Position(5,1));
private Roi RoiN1 = new Roi("Noir","KN",new Position(5,8));
private Roi RoiB1 = new Roi("Blanc","KB",new Position(4,1));
private Roi RoiN1 = new Roi("Noir","KN",new Position(4,8));
private Piece[][] echiquier =
@ -86,6 +86,8 @@ public class Echiquier {
public String toString() // FONCTION AFFICHAGE
{
char alphabet[]= {'A','B','C','D','E','F','G','H'};
@ -142,9 +144,6 @@ public class Echiquier {
}while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length));
for (k = 0; k < codes.length;k++) /// TEST 2EME COORS
{
for (l = 0; l < codes.length;l++)
@ -161,7 +160,7 @@ public class Echiquier {
else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE
{
System.out.println("Déplacement impossible. Recommencez. /n");
System.out.println("Déplacement impossible. Recommencez. \n");
return false;
}
@ -185,11 +184,80 @@ public class Echiquier {
return false;
}
public boolean verificationMouvementSilencieuse(Joueur J, String A, String B) // FONCTION TRADUCTION, VERIF + DEPLACEMENTS SI POSSIBLE
{
int i = -1;
int j = -1;
int k;
int l;
Position stock;
Position stock2;
do { /// TEST 1ERE COORS
i++;
j = -1;
do {
j++;
if (getCodes()[i][j].equals(A)) //Cherche dans la matrice code si on trouve une string = celle donnée par le joueur
{
if (this.getEchiquier()[i][j].getNom().equals("..")) // Verifie si la case choisie n'est pas vide
{
return false;
}
else if (this.getEchiquier()[i][j].getCouleur() != J.getCouleur()) // Verifie si la piece choisie n'est pas de la faction opposée
{
return false;
}
}
}while(( (getCodes()[i][j].equals(A)) == false) && (j+1 < codes.length));
}while((getCodes()[i][j].equals(A) == false) && (i+1 < codes.length));
for (k = 0; k < codes.length;k++) /// TEST 2EME COORS
{
for (l = 0; l < codes.length;l++)
{
if (getCodes()[k][l].equals(B) == true)
{
if (this.getEchiquier()[k][l].getCouleur() == J.getCouleur()) // Verifie que la piece visée n'est pas de ta faction
{
return false;
}
else if (this.getEchiquier()[i][j].deplacable(this,this.getEchiquier()[k][l]) == false) // VERIFICATION AVEC FONCTION DEPLACABLE
{
return false;
}
else
{ // Partie déplacement
stock = new Position(l+1,8-k);
stock2 = new Position(j+1,8-i);
this.getEchiquier()[k][l] = this.getEchiquier()[i][j];
this.getEchiquier()[k][l].setPosition(stock);
this.getEchiquier()[i][j] = new Piece(stock2);
return true;
}
}
}
}
System.out.println("Un de vos codes est faux. Recommencez."); // SI COORS INEXISTANTE (EX : A)
return false;
}
public boolean estVide(Position position) {
int x = position.getX();
int y = position.getY();
if(this.echiquier[8-y][x-1].getNom()=="..") {
if(this.echiquier[8-y][x-1].getNom()=="..")
{
return true;
}
return false;

View File

@ -3,7 +3,7 @@ package piecesEchiquier;
public class Piece {
private String couleur;
private String couleur = "";
//private String lettre = "..";
private String nom = "..";
private boolean enVie = true;

View File

@ -1,5 +1,7 @@
package piecesEchiquier;
import joueurs.Joueur;
public class Roi extends Piece {
private boolean verif=false;
@ -100,5 +102,76 @@ public class Roi extends Piece {
}
return false;
}
public boolean enEchec(Echiquier e, Joueur Jopp)
{
for (int i = 0; i < e.getEchiquier().length;i++)
{
for (int j = 0; j < e.getEchiquier().length;j++)
{
if ( !(e.getEchiquier()[i][j].getCouleur() == this.getCouleur() ) && (e.verificationMouvementSilencieuse(Jopp,e.getCodes()[i][j],e.getCodes()[8-this.getPosition().getY()][this.getPosition().getX()-1]) == true) )
{
return true;
}
}
}
return false;
}
public boolean enEchecEtMat(Echiquier e, Joueur Jopp)
{
if (this.getPosition().getY() <= 7 && e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le haut libre
{
e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = this; // on fait un fantome roi
e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()+1); // on corrige sa position
if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat
{
e.getEchiquier()[8-(this.getPosition().getY()+1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()+1));
// on tue le fantome de test
return false;
}
}
if (e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getNom().equals("..")) // verification mouvement vers le bas libre
{
e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = this; // on fait un fantome roi
e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1].getPosition().setY(this.getPosition().getY()-1); // on corrige sa position
if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat
{
e.getEchiquier()[8-(this.getPosition().getY()-1)][this.getPosition().getX()-1] = new Piece(new Position(this.getPosition().getX(),this.getPosition().getY()-1));
// on tue le fantome de test
return false;
}
}
if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getNom().equals("..")) // verification mouvement vers la gauche libre
{
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = this; // on fait un fantome roi
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1].getPosition().setX(this.getPosition().getX()-1); // on corrige sa position
if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat
{
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)-1] = new Piece(new Position(this.getPosition().getX()-1,this.getPosition().getY()) );
// on tue le fantome de test
return false;
}
}
if (e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getNom().equals("..")) // verification mouvement vers la droite libre
{
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = this; // on fait un fantome roi
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1].getPosition().setX(this.getPosition().getX()+1); // on corrige sa position
if (!(this.enEchec(e,Jopp) )) // si pas en echec possibilité de mouvement donc pas echec et mat
{
e.getEchiquier()[8-this.getPosition().getY()][(this.getPosition().getX()-1)+1] = new Piece(new Position(this.getPosition().getX()+1,this.getPosition().getY()) );
// on tue le fantome de test
return false;
}
}
return true;
}
}

View File

@ -11,10 +11,8 @@ public class Tour extends Piece {
{
if(p.getPosition().getX() == this.getPosition().getX()) // verification les 2 pieces sont sur la meme colonne
{
System.out.println("test");
if (p.getPosition().getY() > this.getPosition().getY()) // Test si la 2 eme piece est au dessus de la 1ere
{
System.out.println("test2");
for (int i = this.getPosition().getY()+1; i <= p.getPosition().getY()-1;i++) // verifie qu'il n'y a pas d'obstacles sur le chemin
{
if (!(e.getEchiquier()[8-i][this.getPosition().getX()-1].getNom().equals(".."))) // SI case non vide

View File

@ -48,13 +48,19 @@ public class main {
B = sc.nextLine();
}while (e.verificationMouvement(j1, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées
if (e.getRoiN1().enEchec(e,j2) && e.getRoiN1().enEchecEtMat(e,j2))
{
System.out.println("Le joueur 2 est echec et mat, il a perdu !");
jeu = false;
}
//REAFFICHAGE ECHIQUIER
System.out.println(e.toString());
// JOUEUR2
System.out.println("Tour de "+j2.getNom()+"\n");
if (jeu == true)
{
do {
System.out.println("Quelle piece voulez vous deplacer ? Donnez le code correspondant de la piece a  deplacer(ex : A1).\n");
A = sc.nextLine();
@ -63,7 +69,13 @@ public class main {
B = sc.nextLine();
}while (e.verificationMouvement(j2, A,B) != true); // Tant que le mouvement n'est pas faisable on demande 2 coordonnées
}
if (e.getRoiB1().enEchec(e,j1) && e.getRoiN1().enEchecEtMat(e,j1))
{
System.out.println("Le joueur 1 est echec et mat, il a perdu !");
jeu = false;
}
//jeu = false;
}while (jeu == true);