diff --git a/Klassendiagramm.svg b/Klassendiagramm.svg index ed9aafc..d8cd095 100644 --- a/Klassendiagramm.svg +++ b/Klassendiagramm.svg @@ -1 +1,4 @@ -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 \ No newline at end of file + + + +Game
+Game(userInterface:UserInterface)
+Game(userInterface:UserInterface)
+initPhase();boolean
+initPhase();boolean
#selectTrack(selectedTrack:File):Track
#selectTrack(selectedTrack:File):Track
#selectMoveStrategy(car:Car,strategy:MoveStrategy);
#selectMoveStrategy(car:Car,strategy:MoveStrategy);
+gamePhase();
+gamePhase();
+onlyOneCarLeft();boolean
+onlyOneCarLeft();boolean
+carsMoving();boolean
+carsMoving();boolean
Track
-track:List<String>
-track:List<String>
+CRASH_INDICATOR:char{final}
+CRASH_INDICATOR:char{final}
-finishLine:List<PositionVector>{final}
-finishLine:List<PositionVector>{final}
-finishTyp:ConfigSpecification.SpaceType
-finishTyp:ConfigSpecification.SpaceType
-cars:List<Car>
-cars:List<Car>
+Track(trackFile:File)
+Track(trackFile:File)
-readFile(trackFile:File)
-readFile(trackFile:File)
-addCars()
-addCars()
-findFinish()
-findFinish()
-findChar(symbol:char);PositionVector
-findChar(symbol:char);PositionVector
-drawCharOnTrackIndicator(positionVector:PositionVector,symbol:char)
-drawCharOnTrackIndicator(positionVector:PositionVector,symbol:char)
+getFinishLine();List<PositionVector>
+getFinishLine();List<PositionVector>
+getTrack()
+getTrack()
+moveCar(carIndex:int)
+moveCar(carIndex:int)
-makeCarMoveInTrack(carIndex:int)
-makeCarMoveInTrack(carIndex:int)
+willCrashAtPosition(carIndex:int,positionVector:PositionVector);boolean
+willCrashAtPosition(carIndex:int,positionVector:PositionVector);boolean
+carDoesCrash(carIndex:int,crashPositionVector:PositionVector)
+carDoesCrash(carIndex:int,crashPositionVector:PositionVector)
+calculatePointsOnPath(startPosition:PositionVector,endPosition:PositionVector):ArrayList<PositionVector>
+calculatePointsOnPath(startPosition:PositionVector,endPosition:PositionVector):ArrayList<Positi...
+calculatePointsOnPath(startPosition:PositionVector,endPosition:PositionVector):ArrayList<PositionVector>
+calculatePointsOnPath(startPosition:PositionVector,endPosition:PositionVector):ArrayList<Positi...
PositionVectorConfig<<enumeration>>Strategy Type<<enumeration>>DirectionCar
-id:char{final,readOnly}
-id:char{final,readOnly}
-position:PositionVector
-position:PositionVector
-velocity:PositionVector{readOnly}
-velocity:PositionVector{readOnly}
-crashed:boolean{readOnly}
-crashed:boolean{readOnly}
-winPoints:int
-winPoints:int
-moveStrategy:MoveStrategy
-moveStrategy:MoveStrategy
+Car(id:char,position:PositionVector)
+Car(id:char,position:PositionVector)
+nextPosition();PositionVector
+nextPosition();PositionVector
+accelerate(aceleration:Direction)
+accelerate(aceleration:Direction)
+move()
+move()
+crash()
+crash()
+getID()
+getID()
+increaseWinPoints()
+increaseWinPoints()
+deductWinPoints()
+deductWinPoints()
+getWinPoints():int
+getWinPoints():int
+getVelocity():PositionVector
+getVelocity():PositionVector
+setPosition(position:PositionVector{final})
+setPosition(position:PositionVector{final})
+nextPosition():PositionVector
+nextPosition():PositionVector
+accelerate(acceleration:PositionVector.Direction)
+accelerate(acceleration:PositionVector.Direc...
+move()
+move()
+crash()
+crash()
+isCrashed();boolean
+isCrashed();boolean
+setMoveStrategy(moveStrategy:MoveStrategy)
+setMoveStrategy(moveStrategy:MoveStrategy)
+gettMoveStrategy();MoveStrategy
+gettMoveStrategy();MoveStrategy
<<enumeration>>Space Type
Strategy
Strategy
MoveListStrategy
-moveList:List<Direction>
-moveList:List<Direction>
-pointer:int
-pointer:int
+MoveListStrategy(path:String)
+MoveListStrategy(path:String)
+nextMove();Direction
+nextMove();Direction
-readFile(trackFile:File)
-readFile(trackFile:File)
DoNotMoveStrategy
+nextMove();Direction
+nextMove();Direction
PathFollowerMoveStrategy
-currentPosition:PositionVector
-currentPosition:PositionVector
-currentVelocity:PositionVector
-currentVelocity:PositionVector
-pointList:ArrayList<PositionVector>
-pointList:ArrayList<PositionVector>
-pointer:int
-pointer:int
+PathFollowerMoveStrategy(path:String,startPosition:PositionVector)
+PathFollowerMoveStrategy(path:String,startPosition:PositionVector)
+readFile(trackFile:File)
+readFile(trackFile:File)
+nextMove();Direction
+nextMove();Direction
UserMoveStrategy
-userInterface:UserInterface
-userInterface:UserInterface
-carIndex :int
-carIndex :int
-carID:char
-carID:char
+UserMoveStrategy(userInterface:UserInterface,carIndex:int,carID:char)
+UserMoveStrategy(userInterface:UserInterface,carIndex:int,carID:...
+nextMove();Direction
+nextMove();Direction
InvalidFileFormatExceptionInvalidTrackFormatExceptionMainUserInterface
-textIO:TextIO{final}
-textIO:TextIO{final}
-textTerminal:TextTerminal{final}
-textTerminal:TextTerminal{final}
+UserInterface(welcomeText:String)
+UserInterface(welcomeText:String)
+printInformation(text:String)
+printInformation(text:String)
+selectOption(text:String,options:List<String>):int
+selectOption(text:String,options:List<String>):int
+selectDirection(playingCarIndex:int,playingCarID:char):PositionVector.Direction
+selectDirection(playingCarIndex:int,playingCarID:char):PositionVector.Dire...
-getDirection(number:int):PositionVector.Direction
-getDirection(number:int):PositionVector.Direction
+printTrack(track:Track)
+printTrack(track:Track)
+quit(text:String)
+quit(text:String)
PathFinderMoveStrategy
-track:Track
-track:Track
-carIndex:int
-carIndex:int
-moveList:List<PositionVector.Direction>
-moveList:List<PositionVector.Direction>
-allDirections:List<PositionVector.Direction>
-allDirections:List<PositionVector.Direction>
-calculatedStates:List<State>
-calculatedStates:List<State>
+PathFinderMoveStrategy(track:Track,carIndex)
+PathFinderMoveStrategy(track:Track,carIndex)
-createMoveList()
-createMoveList()
-alreadyCalculated(state:State);boolean
-alreadyCalculated(state:State);boolean
+nextMove();Direction
+nextMove();Direction
State
#position:PositionVector
#position:PositionVector
#velocity:PositionVector
#velocity:PositionVector
+State(position:PositionVector,velocity:PositionVector)
+State(position:PositionVector,velocity:PositionVe...
equals(compareState:State);boolean
equals(compareState:State);boolean
PossibleMove
#directions:List<PositionVector.Direction>
#directions:List<PositionVector.Direction>
#startPosition:PositionVector
#startPosition:PositionVector
#endPosition:PositionVector
#endPosition:PositionVector
#endVelocity:PositionVector
#endVelocity:PositionVector
+PossibleMove(previousMove:PossibleMove, nextDirection:PositionVector.Direction)
+PossibleMove(previousMove:PossibleMove, nextDirection:PositionVector.Direct...
+finished();boolean
+finished();boolean
+crashed();boolean
+crashed();boolean
Text is not SVG - cannot display
\ No newline at end of file