Parprogrammering med tobydrama - Laget funksjonalitet for flagg registrering

Lagt inn metoder og hjelpemetoder for å få til registrering av flagg.
This commit is contained in:
Steinar Aalstad Lillesund 2020-03-16 15:52:18 +01:00
parent 7bd59902e2
commit 31bef9fe0b
3 changed files with 30 additions and 1 deletions

View File

@ -178,6 +178,19 @@ public class Board {
return robots.containsKey(robot);
}
/**
* Updates the flag of the robot if it stands on the correct flag.
* @param robotID The RobotID of a robot
* @param flagID TileType of the flag we check
*/
public void updateFlagOnRobot(RobotID robotID, TileType flagID) {
Robot robot = robots.get(robotID);
int flagNr = flagID.getTileTypeID() % 16;
if (flagNr - 1 == robot.getLastFlagVisited()) {
robot.setLastFlagVisitedAndUpdateBackupPosition(flagNr);
}
}
/**
* Checks if a potential robot move would be blocked by a wall
* @param robotPosition The current position of the robot

View File

@ -8,7 +8,7 @@ import inf112.fiasko.roborally.element_properties.Position;
*/
public class BoardElementContainer <K>{
K obj;
Position pos;
private Position pos;
/**
* Initializes the BoardElementContainer

View File

@ -5,6 +5,7 @@ import inf112.fiasko.roborally.element_properties.Position;
import inf112.fiasko.roborally.element_properties.RobotID;
import inf112.fiasko.roborally.element_properties.TileType;
import inf112.fiasko.roborally.utility.BoardLoaderUtil;
import javafx.geometry.Pos;
import java.io.IOException;
import java.util.ArrayList;
@ -204,4 +205,19 @@ public class RoboRallyGame implements IDrawableGame {
}
}
}
/**
* Checks all flags for robots. Tries to update the flag of the robot.
*/
private void checkAllFlags() {
List<BoardElementContainer<Tile>> listOfFlags = gameBoard.getPositionsOfTileOnBoard(TileType.FLAG_1,
TileType.FLAG_2, TileType.FLAG_3, TileType.FLAG_4);
for (BoardElementContainer<Tile> flag:listOfFlags) {
Position flagPosition = flag.getPosition();
if (gameBoard.hasRobotOnPosition(flagPosition)) {
RobotID robot = gameBoard.getRobotOnPosition(flagPosition);
gameBoard.updateFlagOnRobot(robot, flag.getObject().getTileType());
}
}
}
}