Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. Boolean estCeQueSayPossibleDeMettreLaPieceACetEndroit(Piece piece, int couleurJoueur) {
  2.             int nbPiecesDiagonales = 0;
  3.  
  4.             for(Position position : piece.getShape()) {
  5.                 // Si cette case est "au-dessus" d'une pièce déjà présente, on ne peut pas la mettre.
  6.                 // On boucle sur toutes les pièces et on regarde si l'une d'entre elles se trouvent à la place
  7.                 // de position. Dans ce cas, on return false
  8.                 for (Piece p : board.getPieces()) {
  9.                     for (Position pPosition : p.getShape()) {
  10.                         if (pPosition.getX() == position.getX() && pPosition.getY() == position.getY())
  11.                             return false;
  12.  
  13.                         // On regarde aux 4 coins + 4 diagonales de la cellule actuelle
  14.                         for (int i = -1; i < 1; i++) {
  15.                             for (int y = -1; y < 1; y++) {
  16.                                 int posToCheckX = position.getX() + i;
  17.                                 int posToCheckY = position.getY() + y;
  18.  
  19.                                 // la position à vérifier doit être tq 0 < pos < tailleGrille - pour des raisons évidentes de sécurité
  20.                                 // aussi: on ne veut pas check le cas où i = y = 0, car cela reviendrait à regarder la case actuelle,
  21.                                 // vu que position.getX() + 0 = position.getX() et position.getY() + 0 = position.getY()
  22.                                 if (posToCheckX > 0 && posToCheckY > 0
  23.                                         && posToCheckX < board.getGrid().getSizeX() && posToCheckY < board.getGrid().getSizeY()
  24.                                         && i != 0 && y != 0) {
  25.                                     // Si on est dans les diagolanes => si abs(i) = 1 et abs(y) = 1
  26.                                     if (Math.abs(i) == 1 && Math.abs(y) == 1) {
  27.                                         // On regarde s'il existe une pièce dans cette diagonale
  28.                                         for (Piece pBoard : board.getPieces())
  29.                                             for (Position pBoardPostion : p.getShape())
  30.                                                 if (pBoardPostion.getX() == posToCheckX && pBoardPostion.getY() == posToCheckY)
  31.                                                     // il y a une pièce dans cette diagonale. Est-ce que c'est une des notres ?
  32.                                                     if (pBoardPostion.getIdCouleur() == couleurJoueur)
  33.                                                         // Elle est à nous. On incrémente
  34.                                                         nbPiecesDiagonales++;
  35.                                     } else { // On est pas dans les colones = on est dans les lignes
  36.                                         // On cherche s'il y a une pièce à la position [posToCheckX][posToCheckY]
  37.                                         for (Piece pBoard : board.getPieces())
  38.                                             for (Position pBoardPostion : p.getShape())
  39.                                                 if (pBoardPostion.getX() == posToCheckX && pBoardPostion.getY() == posToCheckY)
  40.                                                     // Il y en a une.
  41.                                                     if (pBoardPostion.getIdCouleur() == couleurJoueur)
  42.                                                         return false;
  43.                                     }
  44.  
  45.                                 }
  46.                             }
  47.                         }
  48.                     }
  49.  
  50.                 }
  51.             }
  52.            
  53.             return nbPiecesDiagonales != 0;
  54.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement