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;
|
package comp1110.ass2;
|
||||||
|
|
||||||
|
import java.lang.module.FindException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -625,6 +626,24 @@ public class BlueLagoon {
|
|||||||
return state.toString();
|
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.
|
* Given a state string and a move string, apply the move to the board.
|
||||||
* <p>
|
* <p>
|
||||||
@ -644,23 +663,96 @@ public class BlueLagoon {
|
|||||||
int x = Integer.parseInt(coordStr.split(",")[0]);
|
int x = Integer.parseInt(coordStr.split(",")[0]);
|
||||||
int y = Integer.parseInt(coordStr.split(",")[1]);
|
int y = Integer.parseInt(coordStr.split(",")[1]);
|
||||||
Coord coord = new Coord(x, y);
|
Coord coord = new Coord(x, y);
|
||||||
state.placePiece(coord, pieceType);
|
|
||||||
|
if ( isMoveValid(stateString, moveString)) state.placePiece(coord, pieceType);
|
||||||
|
|
||||||
if (state.isPhaseOver()){
|
if (state.isPhaseOver()){
|
||||||
state.scorePhase();
|
|
||||||
if (state.getCurrentPhase() == 'E') {
|
if (state.getCurrentPhase() == 'E') {
|
||||||
|
state.scorePhase();
|
||||||
state.cleanBoard();
|
state.cleanBoard();
|
||||||
state.distributeResources();
|
state.distributeResources();
|
||||||
|
state.nextPhase();
|
||||||
|
}
|
||||||
|
else if (state.getCurrentPhase() == 'S') {
|
||||||
|
state.scorePhase();
|
||||||
|
state.nextPlayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state.nextPlayer();
|
state.nextPlayer();
|
||||||
while (!state.getCurrentPlayer().canPlay(state)) {
|
// while (!state.getCurrentPlayer().canPlay(state)) {
|
||||||
state.nextPlayer();
|
// state.nextPlayer();
|
||||||
}
|
// }
|
||||||
|
|
||||||
return state.toString();
|
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.
|
* Given a state string, returns a valid move generated by your AI.
|
||||||
* <p>
|
* <p>
|
||||||
|
Loading…
Reference in New Issue
Block a user