Initial commit.
This commit is contained in:
74
src/cs6601/p1/TerritoryMarker.java
Normal file
74
src/cs6601/p1/TerritoryMarker.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package cs6601.p1;
|
||||
|
||||
public class TerritoryMarker {
|
||||
public static final char BLACK_TERRITORY = 'x';
|
||||
public static final char WHITE_TERRITORY = 'o';
|
||||
public static final char UNOWNED_TERRITORY = '-';
|
||||
public static final char TERRITORY_MARKER = '?';
|
||||
|
||||
public static final int EMPTY = 0;
|
||||
public static final int BLACK = 1;
|
||||
public static final int WHITE = 2;
|
||||
|
||||
public static GameBoard markTerritory(GameBoard gameBoard) {
|
||||
for (int row = 0; row < gameBoard.getSize(); row++) {
|
||||
for (int col = 0; col < gameBoard.getSize(); col++) {
|
||||
char symbol = gameBoard.getSymbolAt(col,row);
|
||||
if (symbol != '.') {
|
||||
continue;
|
||||
}
|
||||
int ownedBy = findTerritory(gameBoard,col,row);
|
||||
if (ownedBy == BLACK) {
|
||||
gameBoard.replaceSymbol(TERRITORY_MARKER, BLACK_TERRITORY);
|
||||
} else if (ownedBy == WHITE) {
|
||||
gameBoard.replaceSymbol(TERRITORY_MARKER, WHITE_TERRITORY);
|
||||
} else {
|
||||
gameBoard.replaceSymbol(TERRITORY_MARKER, UNOWNED_TERRITORY);
|
||||
}
|
||||
}
|
||||
}
|
||||
gameBoard.setTerritoryMarked(true);
|
||||
return gameBoard;
|
||||
}
|
||||
|
||||
public static int getStoneColor(GameBoard gameBoard, int col, int row) {
|
||||
char symbol = gameBoard.getSymbolAt(col,row);
|
||||
if (symbol == GameBoard.BLACK_STONE) {
|
||||
return BLACK;
|
||||
} else if (symbol == GameBoard.WHITE_STONE) {
|
||||
return WHITE;
|
||||
} else {
|
||||
return EMPTY;
|
||||
}
|
||||
}
|
||||
|
||||
public static int findTerritory(GameBoard gameBoard, int col, int row) {
|
||||
char symbol = gameBoard.getSymbolAt(col,row);
|
||||
|
||||
if (symbol == GameBoard.BLACK_STONE) {
|
||||
return BLACK;
|
||||
} else if (symbol == GameBoard.WHITE_STONE) {
|
||||
return WHITE;
|
||||
} else if (symbol == TERRITORY_MARKER) {
|
||||
return EMPTY;
|
||||
}
|
||||
|
||||
gameBoard.markTerritory(col,row,TERRITORY_MARKER);
|
||||
int borderBits = EMPTY;
|
||||
|
||||
if (col > 0) {
|
||||
borderBits |= findTerritory(gameBoard,col-1,row);
|
||||
}
|
||||
if (col < gameBoard.getSize() - 1) {
|
||||
borderBits |= findTerritory(gameBoard,col+1,row);
|
||||
}
|
||||
if (row > 0) {
|
||||
borderBits |= findTerritory(gameBoard,col,row-1);
|
||||
}
|
||||
if (row < gameBoard.getSize() - 1) {
|
||||
borderBits |= findTerritory(gameBoard,col,row+1);
|
||||
}
|
||||
|
||||
return borderBits;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user