This commit is contained in:
Kristian Knarvik 2020-02-25 17:00:22 +01:00
commit e51ac1da92
5 changed files with 146 additions and 3 deletions

View File

@ -25,4 +25,43 @@
#### Tile #### Tile
*Brukerhistorie* *Brukerhistorie*
* Som brett trenger jeg noe på meg som gir meg funksjonalitet * 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

View File

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

View File

@ -65,9 +65,9 @@ public class Board {
* Moves all dead robots to their backups and makes them part of the board again * Moves all dead robots to their backups and makes them part of the board again
*/ */
public void respawnRobots() { public void respawnRobots() {
//TODO: Account for several robots re-spawning at same backup
for (Robot robot : deadRobots) { for (Robot robot : deadRobots) {
robot.setPosition(robot.getBackupPosition()); robot.setPosition(robot.getBackupPosition());
robot.setFacingDirection(Direction.NORTH);
robots.put(robot.getRobotId(), robot); robots.put(robot.getRobotId(), robot);
} }
deadRobots = new ArrayList<>(); deadRobots = new ArrayList<>();
@ -212,7 +212,7 @@ public class Board {
* @param robot The robot to kill * @param robot The robot to kill
*/ */
private void killRobot(Robot robot) { private void killRobot(Robot robot) {
//TODO: Must remove a life from the robot/player robot.setAmountOfLives(robot.getAmountOfLives() - 1);
removeDeadRobotFromBoard(robot); removeDeadRobotFromBoard(robot);
} }

View File

@ -8,6 +8,7 @@ import inf112.fiasko.roborally.element_properties.RobotID;
* This class represents a robot * This class represents a robot
*/ */
public class Robot { public class Robot {
private int amountOfLives = 3;
private int robotDamageTaken = 0; private int robotDamageTaken = 0;
private final RobotID robotId; private final RobotID robotId;
private boolean inPowerDown = false; private boolean inPowerDown = false;
@ -130,4 +131,18 @@ public class Robot {
} }
this.facingDirection = newFacingDirection; 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; }
} }

View File

@ -94,4 +94,12 @@ public class BoardTest {
robotList.add(robot); robotList.add(robot);
new Board(tileGrid, wallGrid, robotList); 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());
}
} }