diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Car.java b/src/main/java/ch/zhaw/pm2/racetrack/Car.java index c8739f1..8e9255e 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/Car.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/Car.java @@ -24,6 +24,10 @@ public class Car implements CarSpecification { * Current position of the car on the track grid using a {@link PositionVector} */ private PositionVector position; + /** + * Points that car is holding for determining winner. + */ + private int winPoints; /** * Current velocity of the car using a {@link PositionVector} @@ -59,6 +63,18 @@ public class Car implements CarSpecification { return id; } + public void increaseWinPoints() { + winPoints ++; + } + + public void deductWinPoints() { + winPoints --; + } + + public int getWinPoints() { + return winPoints; + } + /** * Returns the current velocity of the car as a PositionVector. * diff --git a/src/main/java/ch/zhaw/pm2/racetrack/Game.java b/src/main/java/ch/zhaw/pm2/racetrack/Game.java index 858486f..44c5bde 100644 --- a/src/main/java/ch/zhaw/pm2/racetrack/Game.java +++ b/src/main/java/ch/zhaw/pm2/racetrack/Game.java @@ -266,44 +266,44 @@ public class Game implements GameSpecification { return pathList; } - private void calculateWinner(PositionVector start, PositionVector finish, int carIndex ){ + private void calculateWinner(PositionVector start, PositionVector finish, int carIndex ) { List path = calculatePath(start, finish); for (PositionVector point : path){ switch (track.getSpaceType(point)) { case FINISH_UP: if(start.getY() < finish.getY()) { - //track.getCar(carIndex).addWinPoint; - //TODO: add point + track.getCar(carIndex).increaseWinPoints(); } - else if( start.getY() < finish.getY()) { - //TODO: deduct point + else if(start.getY() < finish.getY()) { + track.getCar(carIndex).deductWinPoints(); } break; case FINISH_DOWN: if(start.getY() > finish.getY()){ - //track.getCar(carIndex).addWinPoint; + track.getCar(carIndex).increaseWinPoints(); } else if (start.getY() < finish.getY()){ - + track.getCar(carIndex).deductWinPoints(); } break; case FINISH_RIGHT: if(start.getX() < finish.getX()){ - //track.getCar(carIndex).addWinPoint; + track.getCar(carIndex).increaseWinPoints(); } else if (start.getX() < finish.getX()){ - + track.getCar(carIndex).deductWinPoints(); } break; case FINISH_LEFT: if(start.getX() > finish.getX()){ - //track.getCar(carIndex).addWinPoint; + track.getCar(carIndex).increaseWinPoints(); } else if (start.getX() < finish.getX()){ - + track.getCar(carIndex).increaseWinPoints(); } + break; + } } - } }