bugfix method neighborRule in Rack

master
Mathis 2022-06-05 19:56:45 +02:00
parent b7da0b39d7
commit 83abebacdc
1 changed files with 11 additions and 5 deletions

View File

@ -37,22 +37,26 @@ public class Rules {
Tile checkNeighbor = null; Tile checkNeighbor = null;
Boolean checkCase = false; Boolean checkCase = false;
Boolean badNeighbor = false; Boolean badNeighbor = false;
// the first loop is to choose the line to check either '-'(horizontal, i = 0 ) or '|'(vertical, = 1)
for(int i = 0; i < 2 ; i++) { for(int i = 0; i < 2 ; i++) {
//the second loop is to check the neighbors of the tile that we want to place
for(int j = -1; j < 2 ; j=j+2) { for(int j = -1; j < 2 ; j=j+2) {
//verify if the neighbors exist when the tile placed is close to the edge of the board for the two conditions
if (i == 0) { if (i == 0) {
if (tile.getPositionRow() >= 0 && tile.getPositionColumn()+j <= 9) { if (tile.getPositionColumn()+j >= 0 && tile.getPositionColumn()+j <= 8) {
checkNeighbor = board.getGridBoardTile()[tile.getPositionRow()][tile.getPositionColumn()+j]; checkNeighbor = board.getGridBoardTile()[tile.getPositionRow()][tile.getPositionColumn()+j];
checkCase = true; checkCase = true;
} }
}else { }else {
if (tile.getPositionRow()+j >= 0 && tile.getPositionColumn() <= 9) { if (tile.getPositionRow()+j >= 0 && tile.getPositionRow()+j <= 8) {
checkNeighbor = board.getGridBoardTile()[tile.getPositionRow()+j][tile.getPositionColumn()]; checkNeighbor = board.getGridBoardTile()[tile.getPositionRow()+j][tile.getPositionColumn()];
checkCase = true; checkCase = true;
} }
} }
//if the neighbor exist, check the correspondence between the neighbor and the tile
if (checkCase) { if (checkCase) {
if ( checkNeighbor != null) { if ( checkNeighbor != null) {
@ -61,6 +65,8 @@ public class Rules {
if ( tile.getShape() == checkNeighbor.getShape() || tile.getColor() == checkNeighbor.getColor() ) { if ( tile.getShape() == checkNeighbor.getShape() || tile.getColor() == checkNeighbor.getColor() ) {
System.out.println("Il y a correspondance avec la tuile !"); System.out.println("Il y a correspondance avec la tuile !");
nbrNeighbor = nbrNeighbor + 1; nbrNeighbor = nbrNeighbor + 1;
//if there is no correspondence, then the tile can't be placed
}else { }else {
badNeighbor = true; badNeighbor = true;
System.out.println("Il n'y a pas correspondance avec la tuile !"); System.out.println("Il n'y a pas correspondance avec la tuile !");
@ -72,9 +78,9 @@ public class Rules {
} }
if (badNeighbor) { if (badNeighbor) {
return 0; return 0; //tile can't be placed
}else { }else {
return nbrNeighbor; return nbrNeighbor; //tile can be placed and the number returned can possibly increase the player's score
} }
} }