fixing function quit in usermovestrategy

This commit is contained in:
romanschenk37 2022-03-25 16:31:37 +01:00
parent c43a08cef9
commit 52f9eb7629
1 changed files with 12 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package ch.zhaw.pm2.racetrack;
import ch.zhaw.pm2.racetrack.given.GameSpecification; import ch.zhaw.pm2.racetrack.given.GameSpecification;
import ch.zhaw.pm2.racetrack.strategy.*; import ch.zhaw.pm2.racetrack.strategy.*;
import org.hamcrest.core.IsInstanceOf;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -240,17 +241,25 @@ public class Game implements GameSpecification {
* @return the ID of the winning car return null if there is no winner. * @return the ID of the winning car return null if there is no winner.
*/ */
public String gamePhase() { public String gamePhase() {
while (carsMoving() && getWinner() == NO_WINNER) { boolean quit = false;
while (carsMoving() && getWinner() == NO_WINNER && !quit) {
userInterface.printInformation("Player " + track.getCar(currentCarIndex).getID() + "'s turn!");
userInterface.printTrack(track); userInterface.printTrack(track);
Direction direction; Direction direction;
direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove(); direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
if (direction == null) { if (direction == null) {
if(track.getCar(currentCarIndex).getMoveStrategy() instanceof UserMoveStrategy){
quit = true;
direction = Direction.NONE;
} else {
track.getCar(currentCarIndex).setMoveStrategy(new DoNotMoveStrategy()); track.getCar(currentCarIndex).setMoveStrategy(new DoNotMoveStrategy());
direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove(); direction = track.getCar(currentCarIndex).getMoveStrategy().nextMove();
} }
}
doCarTurn(direction); doCarTurn(direction);
switchToNextActiveCar(); switchToNextActiveCar();
} }
userInterface.printInformation("The game has finished!");
userInterface.printTrack(track); userInterface.printTrack(track);
int indexWinner = getWinner(); int indexWinner = getWinner();
if (indexWinner == NO_WINNER) { if (indexWinner == NO_WINNER) {