diff --git a/Deliverables/Oblig2.md b/Deliverables/Oblig2.md index a70410d..3247780 100644 --- a/Deliverables/Oblig2.md +++ b/Deliverables/Oblig2.md @@ -25,4 +25,43 @@ #### Tile *Brukerhistorie* -* Som brett trenger jeg noe på meg som gir meg funksjonalitet \ No newline at end of file +* Som brett trenger jeg noe på meg som gir meg funksjonalitet + +#### Robot +*Krav* +* Må kunne dø +* Må kunne gjennopstå +* Må kunne ta skade +* Må peke i en gyldig retning +* Må bevege seg i pekende retning + + +*Brukerhistorie* +* Som robot må jeg kunne dytte en annen robot hvis det er lovlig å dytte roboten, for å kunne gjøre et gyldig trekk +* Som robot må jeg peke i en ortogonal retning for å ha en gyldig bevegelses retning +* Som robot må jeg kunne bevege meg i pekende retning, for å kunne gjøre et gyldig trekk + +#### Vegg +*Krav* +* Må kunne stoppe en robot + +*Brukerhistorie* +* Som vegg må jeg stoppe en robot fra å gå gjennom meg for hindre dem å gjøre et ugyldig trekk +* Som vegg må jeg kunne bli plassert i forskjellige retninger for å kunne bestemme den funksjonelle retningen til veggen + +#### Brett +*Krav* +* Må kunne ha forskjellige tiles + +*Brukerhistorie* +* Som brett må jeg kunne ha forskjellige tiles for å kunne vise alle aspektene av spillet + +#### Hull +*Krav* +* Må kunne drepe en robot + +#### Spiller +*Brukerhistorie* +* Som spiller må roboten min kunne gjennopstå om den har flere liv, for å kunne spille videre +* Som spiller må roboten min kunne dø, for å håntere om roboten tar for mye skade eller går i et hull/av kartet +* Som spiller må roboten min kunne ta skade, for å håntere påvirkning fra objekter som avgir skade til roboter \ No newline at end of file diff --git a/docs/team/referater/referat_25_02_2020.md b/docs/team/referater/referat_25_02_2020.md new file mode 100644 index 0000000..da6ed5b --- /dev/null +++ b/docs/team/referater/referat_25_02_2020.md @@ -0,0 +1,81 @@ +## Oppmøte +Tilstede: Steinar, Gabriel, Kristian, Torbjørn, Petter +Ikke tilstede: + +## Agenda +- Planlegge brukerhistorier + + +## Møte +Det har blitt diskutert hvilke brukerhistorier det er vi trenger, og hvorfor. Hvilke krav de forskjellige brukerhistoriene har og hvordan vi kan løse dem. +Snakket om funksjonalitet på enkelte aspekter med spillet, og hvordad disse skal bli håndtert. + + +#### Idemyldring til krav/brukerhistorie: +- Stoppe robot fra å gå igjennom vegger + +- Kunne gjør et gyldig trekk + +- Kunne dytte en robot + +- Vegger må ha forskjellige retningsorienteringer + +- brett må kunne ha forskjellige tiles + +- Robot må kunne gjennoppstå + +- Robot må kunne ta skade + +- Robot må kunne dø + +- Hull må drepe robot + +- Må kunne dytte en robot dersom det er gydig å dytte den + +#### Brukerhistorie/notater + +"Stoppe robot fra å gå gjennom vegg" + +- Hvem: Vegg + +- Hva: Stoppe robot fra å gå gjennom meg + +- Hvorfor: For å hindre roboten i å gjøre et ugyldig trekk + +"Kunne dytte en robot hvis det er lovlig å dytte den" + +- Hvem: Robot + +- Hvorfor: For å kunne gjøre gyldige trekk + +"Vegger må kunne vøre i fordskjellige retninger" + +- Hvem: Vegg + +- Hva: Som vegg må jeg kunne bli plassert i forskjellige retninger + +- Hvorfor: For å kunne bestemme den funksjonelle retningen til veggen + +"Brett må kunne ha forskjellige tiles" + +- Hvem: Brett + +- Hva: Som brett må jeg kunne ha forskjellige tiles + +- Hvorfor: For å kunne vise alle de forskjellige aspektene av spillets tiles. + +"Robot må kunne gjennoppstå, dersom den har enda har flere liv" + +- Hvem: Spiller + +- Hva: Respawne roboten, dersom den ikke er tom for liv + +- Hvorfor: Som spiller vil jeg at roboten min skal kunne gjennoppstå for å være i stand til å spille en runde til + +"Robot må kunne ta skade" + +- Hvem: Spiller + +- Hva: Robot må kunne ta imot skade + +- Hvorfor: For å håndtere andre objekters påvirkning på roboten \ No newline at end of file diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index cb51edf..26721bb 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -65,9 +65,9 @@ public class Board { * Moves all dead robots to their backups and makes them part of the board again */ public void respawnRobots() { - //TODO: Account for several robots re-spawning at same backup for (Robot robot : deadRobots) { robot.setPosition(robot.getBackupPosition()); + robot.setFacingDirection(Direction.NORTH); robots.put(robot.getRobotId(), robot); } deadRobots = new ArrayList<>(); @@ -212,7 +212,7 @@ public class Board { * @param robot The robot to kill */ private void killRobot(Robot robot) { - //TODO: Must remove a life from the robot/player + robot.setAmountOfLives(robot.getAmountOfLives() - 1); removeDeadRobotFromBoard(robot); } diff --git a/src/main/java/inf112/fiasko/roborally/objects/Robot.java b/src/main/java/inf112/fiasko/roborally/objects/Robot.java index 1922782..977da6b 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Robot.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Robot.java @@ -8,6 +8,7 @@ import inf112.fiasko.roborally.element_properties.RobotID; * This class represents a robot */ public class Robot { + private int amountOfLives = 3; private int robotDamageTaken = 0; private final RobotID robotId; private boolean inPowerDown = false; @@ -130,4 +131,18 @@ public class Robot { } this.facingDirection = newFacingDirection; } + + /** + * Sets the amount if life the robot has left + * @param amountOfLives the new amount if lives the robot has left + */ + public void setAmountOfLives(int amountOfLives) { + this.amountOfLives = amountOfLives; + } + + /** + * Gets the amount of life a robot has left. + * @return amount of life left + */ + public int getAmountOfLives() { return this.amountOfLives; } } diff --git a/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java b/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java index 05b1c72..51ab146 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/BoardTest.java @@ -94,4 +94,12 @@ public class BoardTest { robotList.add(robot); new Board(tileGrid, wallGrid, robotList); } + @Test + public void killRobotReducesAmountOfLivesByOne () { + Robot robot = board.getAliveRobots().get(0); + for (int i = 0; i < 3; i++) { + board.moveRobot(robot.getRobotId(), Direction.SOUTH); + } + assertEquals(2, robot.getAmountOfLives()); + } }