Track feature #21
|
@ -48,6 +48,14 @@ public class Car implements CarSpecification {
|
||||||
setPosition(position);
|
setPosition(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public char getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PositionVector getVelocity() {
|
||||||
|
return velocity;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set this Car position directly, regardless of current position and velocity.
|
* Set this Car position directly, regardless of current position and velocity.
|
||||||
* This should only be used by the game controller in rare cases to set the crash or winning position.
|
* This should only be used by the game controller in rare cases to set the crash or winning position.
|
||||||
|
@ -58,7 +66,7 @@ public class Car implements CarSpecification {
|
||||||
@Override
|
@Override
|
||||||
public void setPosition(final PositionVector position) {
|
public void setPosition(final PositionVector position) {
|
||||||
// TODO: implementation
|
// TODO: implementation
|
||||||
throw new UnsupportedOperationException();
|
this.position = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -127,6 +127,8 @@ public class Game implements GameSpecification {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does indicate if a car would have a crash with a WALL space or another car at the given position.
|
* Does indicate if a car would have a crash with a WALL space or another car at the given position.
|
||||||
* @param carIndex The zero-based carIndex number
|
* @param carIndex The zero-based carIndex number
|
||||||
|
@ -135,7 +137,8 @@ public class Game implements GameSpecification {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean willCarCrash(int carIndex, PositionVector position) {
|
public boolean willCarCrash(int carIndex, PositionVector position) {
|
||||||
// TODO: implementation
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,13 +73,12 @@ public class Track implements TrackSpecification {
|
||||||
* @throws InvalidTrackFormatException if the track file contains invalid data (no tracklines, ...)
|
* @throws InvalidTrackFormatException if the track file contains invalid data (no tracklines, ...)
|
||||||
*/
|
*/
|
||||||
public Track(File trackFile) throws FileNotFoundException, InvalidTrackFormatException {
|
public Track(File trackFile) throws FileNotFoundException, InvalidTrackFormatException {
|
||||||
// TODO:
|
|
||||||
track = new ArrayList<>();
|
track = new ArrayList<>();
|
||||||
cars = new ArrayList<>();
|
cars = new ArrayList<>();
|
||||||
finishLine = new ArrayList<>();
|
finishLine = new ArrayList<>();
|
||||||
readFile(trackFile);
|
readFile(trackFile);
|
||||||
findFinish();
|
findFinish();
|
||||||
addCar();
|
addCars();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,8 +94,8 @@ public class Track implements TrackSpecification {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: MAKE PRIVATE
|
|
||||||
public void addCar() throws InvalidTrackFormatException {
|
private void addCars() throws InvalidTrackFormatException {
|
||||||
ConfigSpecification.SpaceType[] spaceTypes = ConfigSpecification.SpaceType.values();
|
ConfigSpecification.SpaceType[] spaceTypes = ConfigSpecification.SpaceType.values();
|
||||||
List<Character> allSpaceTypesAsChar = new ArrayList<>();
|
List<Character> allSpaceTypesAsChar = new ArrayList<>();
|
||||||
List<Character> usedSymbolForCar = new ArrayList<>();
|
List<Character> usedSymbolForCar = new ArrayList<>();
|
||||||
|
@ -159,7 +158,6 @@ public class Track implements TrackSpecification {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @return all Cars
|
* @return all Cars
|
||||||
*/
|
*/
|
||||||
public List<Car> getCars() {
|
public List<Car> getCars() {
|
||||||
|
@ -167,7 +165,6 @@ public class Track implements TrackSpecification {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @return finishLine
|
* @return finishLine
|
||||||
*/
|
*/
|
||||||
public List<PositionVector> getFinishLine() {
|
public List<PositionVector> getFinishLine() {
|
||||||
|
@ -181,6 +178,32 @@ public class Track implements TrackSpecification {
|
||||||
return track;
|
return track;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This Method will update the Car on the track
|
||||||
|
* and will make the Car move to the next position
|
||||||
|
* @param carIndex representing the current Car
|
||||||
|
*/
|
||||||
|
public void moveCar(int carIndex) {
|
||||||
|
PositionVector positionVector = findChar(getCarId(carIndex));
|
||||||
|
//Removes the Car at Current Pos
|
||||||
|
String line = track.get(positionVector.getY());
|
||||||
|
line = line.substring(0,positionVector.getX()) + ConfigSpecification.SpaceType.TRACK.getValue() + line.substring(positionVector.getX()+1);
|
||||||
|
track.add(positionVector.getY(),line);
|
||||||
|
|
||||||
|
//Adds Car at new Position
|
||||||
|
positionVector = cars.get(carIndex).nextPosition();
|
||||||
|
line = track.get(positionVector.getY());
|
||||||
|
line = line.substring(0,positionVector.getX()) + cars.get(carIndex).getId() + line.substring(positionVector.getX()+1);
|
||||||
|
track.add(positionVector.getY(),line);
|
||||||
|
|
||||||
|
//Change position of car
|
||||||
|
getCar(carIndex).move();
|
||||||
|
}
|
||||||
|
|
||||||
|
public char getRealCharAtPosition(PositionVector positionVector) {
|
||||||
|
return track.get(positionVector.getY()).charAt(positionVector.getX());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the type of space at the given position.
|
* Return the type of space at the given position.
|
||||||
* If the location is outside the track bounds, it is considered a wall.
|
* If the location is outside the track bounds, it is considered a wall.
|
||||||
|
@ -191,7 +214,6 @@ public class Track implements TrackSpecification {
|
||||||
@Override
|
@Override
|
||||||
public Config.SpaceType getSpaceType(PositionVector position) {
|
public Config.SpaceType getSpaceType(PositionVector position) {
|
||||||
|
|
||||||
//TODO: RETURN NULL OR CUSTOM ERROR?
|
|
||||||
char charAtPosition = track.get(position.getY()).charAt(position.getX());
|
char charAtPosition = track.get(position.getY()).charAt(position.getX());
|
||||||
|
|
||||||
ConfigSpecification.SpaceType[] spaceTypes = ConfigSpecification.SpaceType.values();
|
ConfigSpecification.SpaceType[] spaceTypes = ConfigSpecification.SpaceType.values();
|
||||||
|
@ -246,7 +268,6 @@ public class Track implements TrackSpecification {
|
||||||
@Override
|
@Override
|
||||||
public PositionVector getCarPos(int carIndex) {
|
public PositionVector getCarPos(int carIndex) {
|
||||||
return findChar(cars.get(carIndex).getId());
|
return findChar(cars.get(carIndex).getId());
|
||||||
//TODO: SHOULD WE GET CAR POSITION FROM TRACK STRING OR CAR OBJ
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -271,8 +292,16 @@ public class Track implements TrackSpecification {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public char getCharAtPosition(int y, int x, Config.SpaceType currentSpace) {
|
public char getCharAtPosition(int y, int x, Config.SpaceType currentSpace) {
|
||||||
// TODO: implementation
|
char charAtPos = track.get(y).charAt(x);
|
||||||
throw new UnsupportedOperationException();
|
for (Car car : cars) {
|
||||||
|
if(charAtPos == car.getId()) {
|
||||||
|
if(car.isCrashed()) {
|
||||||
|
return CRASH_INDICATOR;
|
||||||
|
}
|
||||||
|
return charAtPos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return currentSpace.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue