task 13 progress, 3 task passed this point
Signed-off-by: Immanuel Alvaro Bhirawa <u7280427@anu.edu.au>
This commit is contained in:
parent
9381eedf5f
commit
0f203df939
@ -1,5 +1,6 @@
|
||||
package comp1110.ass2;
|
||||
|
||||
import java.lang.module.FindException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
@ -625,6 +626,24 @@ public class BlueLagoon {
|
||||
return state.toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
applyMove(GameData.DEFAULT_GAME, "S 0,2");
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a state string and a move string, apply the move to the board.
|
||||
* <p>
|
||||
* If the move ends the phase, apply the end of phase rules.
|
||||
* <p>
|
||||
* Advance current player to the next player in turn order that has a valid
|
||||
* move they can make.
|
||||
*
|
||||
* @param stateString a string representing a game state
|
||||
* @param moveString a string representing the current player's move
|
||||
* @return a string representing the new state after the move is applied to the board
|
||||
*/
|
||||
|
||||
// 2 phases, exploration and settlement
|
||||
/**
|
||||
* Given a state string and a move string, apply the move to the board.
|
||||
* <p>
|
||||
@ -644,23 +663,96 @@ public class BlueLagoon {
|
||||
int x = Integer.parseInt(coordStr.split(",")[0]);
|
||||
int y = Integer.parseInt(coordStr.split(",")[1]);
|
||||
Coord coord = new Coord(x, y);
|
||||
state.placePiece(coord, pieceType);
|
||||
|
||||
if ( isMoveValid(stateString, moveString)) state.placePiece(coord, pieceType);
|
||||
|
||||
if (state.isPhaseOver()){
|
||||
state.scorePhase();
|
||||
if (state.getCurrentPhase() == 'E') {
|
||||
state.scorePhase();
|
||||
state.cleanBoard();
|
||||
state.distributeResources();
|
||||
state.nextPhase();
|
||||
}
|
||||
else if (state.getCurrentPhase() == 'S') {
|
||||
state.scorePhase();
|
||||
state.nextPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
state.nextPlayer();
|
||||
while (!state.getCurrentPlayer().canPlay(state)) {
|
||||
state.nextPlayer();
|
||||
}
|
||||
// while (!state.getCurrentPlayer().canPlay(state)) {
|
||||
// state.nextPlayer();
|
||||
// }
|
||||
|
||||
return state.toString();
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * Get the current phase
|
||||
// * Returns 'E' for exploration, 'S' for settlement, 'O' for game over
|
||||
// * @return char current phase
|
||||
// */
|
||||
// public char getCurrentPhase() {
|
||||
// if (currentPhase == 0) return 'E';
|
||||
// else if (currentPhase == 1) return 'S';
|
||||
// else return 'O'; // Return 'O' for game over
|
||||
// }
|
||||
|
||||
//* A phase is over when either of the following conditions hold:
|
||||
// * - All resources (not including statuettes) have been collected.
|
||||
// * - No player has any remaining valid moves.
|
||||
|
||||
///**
|
||||
// * Given a state string, determine whether it represents an end of phase state.
|
||||
// * <p>
|
||||
// * A phase is over when either of the following conditions hold:
|
||||
// * - All resources (not including statuettes) have been collected.
|
||||
// * - No player has any remaining valid moves.
|
||||
// *
|
||||
// * @param stateString a string representing a game state
|
||||
// * @return true if the state is at the end of either phase and false otherwise
|
||||
// */
|
||||
// public static boolean isPhaseOver(String stateString){
|
||||
// State state = new State(stateString);
|
||||
// return state.isPhaseOver();
|
||||
// }
|
||||
|
||||
///**
|
||||
// * Score for that phase
|
||||
// * This does not automatically move to the next phase
|
||||
// */
|
||||
// public void scorePhase() {
|
||||
// for (Player p: players) {
|
||||
// p.addScore(createScore(p.getPlayerID()));
|
||||
// }
|
||||
// }
|
||||
|
||||
///**
|
||||
// * Place a piece on the board. Uses current turn's player
|
||||
// * This does not check if the move is valid (Use isValidMove() first)
|
||||
// * @param coord Coord coordinate to place piece
|
||||
// * @param type char type of piece
|
||||
// */
|
||||
// public void placePiece(Coord coord, char type) {
|
||||
// if (type == 'S') {
|
||||
// players[currentPlayer].addSettler(coord);
|
||||
// }
|
||||
// else if (type == 'V' || type == 'T') {
|
||||
// players[currentPlayer].addVillage(coord);
|
||||
// }
|
||||
//
|
||||
// // Claim resource if it is a stone circle
|
||||
// if (isStone(coord)) {
|
||||
// for (Resource resource : resources) {
|
||||
// if (resource.getCoord().equals(coord) && resource.isAvailable()) {
|
||||
// players[currentPlayer].addResource(1, resource.getType());
|
||||
// resource.setClaimed();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* Given a state string, returns a valid move generated by your AI.
|
||||
* <p>
|
||||
|
Loading…
Reference in New Issue
Block a user