Fikser en feil i oppdatering av låste kort

Fikser noen formateringsfeil
Fikser noen variabelnavn
Erstatter runGameLoop med runTurn
Endrer navn på metode for å oppdatere låste programmeringskort
Fjerner unødvendinge linjer som ikke gjør noe
This commit is contained in:
Kristian Knarvik 2020-04-07 22:16:31 +02:00
parent 4a885f9fc0
commit b3fee7494f

View File

@ -24,9 +24,10 @@ public class RoboRallyGame implements IDrawableGame {
private List<BoardElementContainer<Tile>> cogwheels; private List<BoardElementContainer<Tile>> cogwheels;
private List<BoardElementContainer<Tile>> conveyorBelts; private List<BoardElementContainer<Tile>> conveyorBelts;
private List<BoardElementContainer<Tile>> fastConveyorBelts; private List<BoardElementContainer<Tile>> fastConveyorBelts;
private List<Player> playerList; private final List<Player> playerList;
private final boolean host; private final boolean host;
private Deck<ProgrammingCard> mainDeck; private Deck<ProgrammingCard> mainDeck;
/** /**
* Instantiates a new robo rally game * Instantiates a new robo rally game
* @param debug Whether to start the game in debugging mode * @param debug Whether to start the game in debugging mode
@ -88,6 +89,7 @@ public class RoboRallyGame implements IDrawableGame {
long cycleDelay = 600; long cycleDelay = 600;
TimeUnit.MILLISECONDS.sleep(cycleDelay); TimeUnit.MILLISECONDS.sleep(cycleDelay);
} }
/** /**
* Initializes the game with a debugging board * Initializes the game with a debugging board
*/ */
@ -114,11 +116,12 @@ public class RoboRallyGame implements IDrawableGame {
private void initializeGame(String boardName) { private void initializeGame(String boardName) {
try { try {
List<Robot> robots = new ArrayList<>(); List<Robot> robots = new ArrayList<>();
int noe = 1; //TODO: Find correct robot spawn positions
int posX = 1;
for (Player player : playerList) { for (Player player : playerList) {
Position spawn = new Position(noe,1); Position spawn = new Position(posX,1);
robots.add(new Robot(player.getRobotID(), spawn)); robots.add(new Robot(player.getRobotID(), spawn));
noe++; posX++;
} }
gameBoard = BoardLoaderUtil.loadBoard("boards/" + boardName, robots); gameBoard = BoardLoaderUtil.loadBoard("boards/" + boardName, robots);
@ -130,7 +133,7 @@ public class RoboRallyGame implements IDrawableGame {
new Thread(() -> { new Thread(() -> {
try { try {
runGameLoop(); runTurn();
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
@ -160,20 +163,6 @@ public class RoboRallyGame implements IDrawableGame {
TileType.CONVEYOR_BELT_SLOW_SIDE_ENTRANCES)); TileType.CONVEYOR_BELT_SLOW_SIDE_ENTRANCES));
} }
/**
* Does whatever the game wants to do
* @throws InterruptedException If interrupted while trying to sleep
*/
private void runGameLoop() throws InterruptedException {
TimeUnit.SECONDS.sleep(3);
runPhase(1);
runPhase(2);
runPhase(3);
runPhase(4);
runPhase(5);
respawnRobots();
}
/** /**
* Runs all the steps of one turn in the game * Runs all the steps of one turn in the game
* @throws InterruptedException If interrupted while trying to sleep * @throws InterruptedException If interrupted while trying to sleep
@ -218,7 +207,7 @@ public class RoboRallyGame implements IDrawableGame {
// Repair robots on repair tiles // Repair robots on repair tiles
repairAllRobotsOnRepairTiles(); repairAllRobotsOnRepairTiles();
if (host) { if (host) {
updatePlayerLockedProgrammingCards(); updateLockedProgrammingCardsForAllPlayers();
removeNonLockedProgrammingCardsFromPlayers(); removeNonLockedProgrammingCardsFromPlayers();
} }
// TODO: If this player is in power down, ask if it shall continue // TODO: If this player is in power down, ask if it shall continue
@ -229,31 +218,46 @@ public class RoboRallyGame implements IDrawableGame {
/** /**
* Locks the players programming cards in relation to the robots damage * Locks the players programming cards in relation to the robots damage
*/ */
private void updatePlayerLockedProgrammingCards() { private void updateLockedProgrammingCardsForAllPlayers() {
for (Player player : playerList) { for (Player player : playerList) {
List<ProgrammingCard> playerProgram = player.getProgram(); List<ProgrammingCard> playerProgram = player.getProgram();
ProgrammingCardDeck playerDeck = player.getPlayerDeck(); ProgrammingCardDeck playerDeck = player.getPlayerDeck();
ProgrammingCardDeck lockedPlayerDeck = player.getLockedPlayerDeck(); ProgrammingCardDeck lockedPlayerDeck = player.getLockedPlayerDeck();
int robotDamage = gameBoard.getRobotDamage(player.getRobotID()); int robotDamage = gameBoard.getRobotDamage(player.getRobotID());
//The player has no locked cards. All previously locked cards should go into the free deck
if (robotDamage <= 4) { if (robotDamage <= 4) {
lockedPlayerDeck.emptyInto(player.getPlayerDeck()); lockedPlayerDeck.emptyInto(player.getPlayerDeck());
player.setLockedPlayerDeck(lockedPlayerDeck);
continue; continue;
} }
//Goes through locked cards and moves them to the locked player deck
for (int i = 1; i <= (robotDamage - 4); i++) { for (int i = 1; i <= (robotDamage - 4); i++) {
ProgrammingCard card = playerProgram.get(playerProgram.size() - i); ProgrammingCard card = playerProgram.get(playerProgram.size() - i);
moveProgrammingCardToLockedDeck(card, playerDeck, lockedPlayerDeck);
}
}
}
if (card.compareTo(playerDeck.peekTop()) == 0) { /**
* Moves a card from the player's deck to the player's locked deck if found
* @param card The card to move to the locked deck
* @param playerDeck The deck containing the player's cards
* @param lockedPlayerDeck The deck containing the player's locked cards
*/
private void moveProgrammingCardToLockedDeck(ProgrammingCard card, ProgrammingCardDeck playerDeck,
ProgrammingCardDeck lockedPlayerDeck) {
for (int i = 0; i < playerDeck.size(); i++) {
if (card.equals(playerDeck.peekTop())) {
//Found the card. Add to the locked deck
lockedPlayerDeck.draw(playerDeck); lockedPlayerDeck.draw(playerDeck);
break;
} else { } else {
//Move the card to the bottom of the deck
playerDeck.draw(playerDeck); playerDeck.draw(playerDeck);
} }
} }
player.setPlayerDeck(playerDeck);
player.setLockedPlayerDeck(lockedPlayerDeck);
}
} }
/** /**
@ -270,7 +274,7 @@ public class RoboRallyGame implements IDrawableGame {
/** /**
* Deals correct amount of cards to active players, based on their robots damage * Deals correct amount of cards to active players, based on their robots damage
*/ */
public void distributeProgrammingCardsToPlayers() { private void distributeProgrammingCardsToPlayers() {
int robotDamage; int robotDamage;
ProgrammingCardDeck playerDeck; ProgrammingCardDeck playerDeck;
mainDeck.shuffle(); mainDeck.shuffle();