Initial commit.

This commit is contained in:
cs6601
2012-08-26 11:48:21 -04:00
commit 36291171e5
41 changed files with 2107 additions and 0 deletions

View 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;
}
}