task 13 progress, 3 task passed this point

Signed-off-by: Immanuel Alvaro Bhirawa <u7280427@anu.edu.au>
This commit is contained in:
Immanuel Alvaro Bhirawa 2023-05-09 01:48:33 +10:00
parent 9381eedf5f
commit 0f203df939

View File

@ -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>