This commit is contained in:
Kristian Knarvik 2020-02-26 20:33:56 +01:00
commit cb8d9287f3
3 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,13 @@
## Oppmøte
Tilstede: Steinar, Gabriel, Kristian, Torbjørn, Petter
Ikke tilstede:
## Agenda
- Jobbe videre på deloppgaver i oblig2.
- Lage akseptansekrav og arbeidsoppgaver for brukerhistorier.
## Møte
Vi har laget akseptansekrav og arbeidsoppgaver som passer med brukerhistoriene.
Refaktorerte formatering fra klassevis til kravvis, der kravet kommer først, så alle brukerhistorier og akseptansekrav til det kravet.
Diskutert hva rollene i gruppen har innebært for de forskjellige medlemmene.
Diskutert hva som kan forbedres til neste sprint - fordeling av commits, effektivisering av brukerhistorier.

View File

@ -19,6 +19,7 @@ public class Board {
private IGrid<Wall> walls;
private IGrid<Tile> tiles;
private Map<RobotID, Robot> robots;
private List<Robot> deadRobots;
/**
* Initializes the board
@ -41,6 +42,7 @@ public class Board {
this.boardHeight = tiles.getHeight();
this.walls = walls;
this.tiles = tiles;
this.deadRobots = new ArrayList<>();
}
/**
@ -207,6 +209,7 @@ public class Board {
private void killRobot(Robot robot) {
robot.setAmountOfLives(robot.getAmountOfLives() - 1);
removeDeadRobotFromBoard(robot);
deadRobots.add(robot);
}
/**
@ -289,4 +292,28 @@ public class Board {
}
return elements;
}
/**
* Moves all dead robots to their backups and makes them part of the board again, and if a robot has no lives
* it will be removed from the game.
*/
public void respawnRobots() {
for (Robot robot : deadRobots) {
if (robot.getAmountOfLives() > 0) {
robot.setPosition(robot.getBackupPosition());
robot.setFacingDirection(Direction.NORTH);
robots.put(robot.getRobotId(), robot);
}
else {
deadRobots.remove(robot);
}
}
}
/**
* Checks if a specific robot is currently alive on the board
* @param robot the ID of the robot you want to check
* @return True/False based on if the robot was found.
*/
public boolean isRobotAlive(RobotID robot) { return robots.containsKey(robot); }
}

View File

@ -129,4 +129,23 @@ public class BoardTest {
board.moveRobot(robot.getRobotId(), Direction.NORTH);
assertEquals(2, robot.getAmountOfLives());
}
@Test
public void respawnRobotAtBackupPosition() {
Robot robot = board.getAliveRobots().get(0);
board.moveRobot(robot.getRobotId(), Direction.NORTH);
board.removeDeadRobotFromBoard(robot);
board.respawnRobots();
assertEquals(robot.getBackupPosition(), someValidPosition1);
}
@Test
public void respawnRobotDoesNotRespawnARobotWithNoLives() {
Robot robot = board.getAliveRobots().get(0);
robot.setAmountOfLives(1);
board.moveRobot(robot.getRobotId(), Direction.NORTH);
board.removeDeadRobotFromBoard(robot);
board.respawnRobots();
assertFalse(board.isRobotAlive(robot.getRobotId()));
}
}