diff --git a/Designphase/Klassendiagramme.md b/Designphase/Klassendiagramme.md index ca1814f..bd4682e 100644 --- a/Designphase/Klassendiagramme.md +++ b/Designphase/Klassendiagramme.md @@ -10,6 +10,8 @@ Hier werden Klassendiagramme veröffentlicht * [ClassChart_V2.1](../uploads/Designphase/Klassendiagramme/ClassChart_V2.1.svg) * [ClassChart_V3.0](../uploads/Designphase/Klassendiagramme/ClassChart_V3.0.svg) * [ClassChart_V3.1](../uploads/Designphase/Klassendiagramme/ClassChart_V3.1.svg) +* [ClassChart_V3.2](../uploads/Designphase/Klassendiagramme/ClassChart_V3.2.svg) + --- diff --git a/Implementierungsphase/Abweichungen-von-der-Designphase.md b/Implementierungsphase/Abweichungen-von-der-Designphase.md new file mode 100644 index 0000000..4586389 --- /dev/null +++ b/Implementierungsphase/Abweichungen-von-der-Designphase.md @@ -0,0 +1,23 @@ +Hier werden sonstige Abweichungen von der Designphase veröffentlicht + +**Abweichungen von der Analysephase** + +**Gebäudebesitzkarte: BuildingProperty** + +* Der Ausdruck "Besitzerkarte" über dem Gebäudenamen wird entfernt +* Die Kosten für das Hotel werden nicht seperat angegeben + +* [Gebäudekarte](../uploads/Implementierungsphase/Abweichungen/2er.png) + +**Sonstige aktualisierte Skizzen** + +* [Hauptdarstellung_V2.0](../uploads/Implementierungsphase/Abweichungen/Hauptdarstellung_V2.0.png) +* [Spielerlobby_V4.0](../uploads/Implementierungsphase/Abweichungen/Menü_Spielerlobby_V4.0.png) +* [Spielerstellung_V3.0](../uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V3.0.png) +* [Spielerstellung_V4.0](../uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V4.0.png) + + +Sonstiges: + +* Das "€"-Zeichen wird nicht angezeigt: + * Lösung: statt 2000 € wird 2000 EUR ausgegeben \ No newline at end of file diff --git a/Implementierungsphase/Klassendiagramme.md b/Implementierungsphase/Klassendiagramme.md new file mode 100644 index 0000000..7877572 --- /dev/null +++ b/Implementierungsphase/Klassendiagramme.md @@ -0,0 +1,3 @@ +Hier werden die neuen Versionen der Klassendiagramme veröffentlicht: + +* [ClassChart_V4.0](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg) \ No newline at end of file diff --git a/Implementierungsphase/Testhandbuch.md b/Implementierungsphase/Testhandbuch.md new file mode 100644 index 0000000..010ec19 --- /dev/null +++ b/Implementierungsphase/Testhandbuch.md @@ -0,0 +1 @@ +Hier wird die aktualisierte Version des Testhandbuches veröffentlicht: \ No newline at end of file diff --git a/Implementierungsphase/Use-Cases.md b/Implementierungsphase/Use-Cases.md new file mode 100644 index 0000000..cf0ffb4 --- /dev/null +++ b/Implementierungsphase/Use-Cases.md @@ -0,0 +1 @@ +Hier werden Änderungen an den Use-Cases veröffentlicht \ No newline at end of file diff --git a/home.md b/home.md index 8b32d22..c9cfdb0 100644 --- a/home.md +++ b/home.md @@ -60,10 +60,10 @@ Schmelz Stubentür (20/0140) # Implementierungsphase -- [Abweichungen von der Designphase](./Beispiel-Wiki/Implementierungsphase/Abweichungen-von-der-Designphase) -- [Use Cases](./Beispiel-Wiki/Implementierungsphase/Use-Cases) -- [Testhandbuch](./Beispiel-Wiki/Implementierungsphase/Testhandbuch) -- [Klassendiagramme](./Beispiel-Wiki/Implementierungsphase/Klassendiagramme) +- [Abweichungen von der Designphase](./Implementierungsphase/Abweichungen-von-der-Designphase) +- [Use Cases](./Implementierungsphase/Use-Cases) +- [Testhandbuch](./Implementierungsphase/Testhandbuch) +- [Klassendiagramme](./Implementierungsphase/Klassendiagramme) # Protokolle diff --git a/uploads/Designphase/Klassendiagramme/ClassChart_V3.2.svg b/uploads/Designphase/Klassendiagramme/ClassChart_V3.2.svg new file mode 100644 index 0000000..430d3a9 --- /dev/null +++ b/uploads/Designphase/Klassendiagramme/ClassChart_V3.2.svg @@ -0,0 +1,4 @@ + + + +
Game
 -gameBoard: GameBoard 
 -bank: Bank 
 -timer: Timer 
 -deck: EventCard 
 -musicEnabled: boolean 
 -soundEffectEnabled: boolean 
 -eventCards: List<EventCard> 
 -communityCards: List<CommunityCard> 
 -gameState: GameState
+ initializeGame(): void
+ startTurn(player: Player): void
+ endTurn(player: Player): void
+ checkWinCondition(): boolean
+ applyEventCard(card: EventCard): void
+  rollDice(): DiceResult
- state
Player
-name: String
-color: ColorRGBA
-accountBalance: int
-gamePiece: GamePiece
-properties: List<Property>
-getOutOfJailCard: int
-fieldId: int

+move(steps: int): void
+buyProperty(property: Property): void
+payRent(amount: int): void
+declareBankruptcy(): void
<<abstract>>
GameState
InGame
GameOver
Lobby
-player
<<abstract>>
PlayerState
Active
Bankrupt%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22NomalState%22%20style%3D%22swimlane%3BfontStyle%3D0%3BchildLayout%3DstackLayout%3Bhorizontal%3D1%3BstartSize%3D26%3BfillColor%3Dnone%3BhorizontalStack%3D0%3BresizeParent%3D1%3BresizeParentMax%3D0%3BresizeLast%3D0%3Bcollapsible%3D1%3BmarginBottom%3D0%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22-240%22%20y%3D%22380%22%20width%3D%22140%22%20height%3D%2240%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3
Lobby
InJail
-roundsInJail: Int
WaitForTurn
-game
StartScreen
CreateGame
Settings
GameClosed
Dice
+rollDice(): int
GulagField
-bailCost: int
+payBail(player: Player): void
+checkInJail(player: Player): boolean
- properties
TestStreckeField
- money: int
+collectMoney(player: Player): void
EventField
+payBail(player: Player): void
+checkIfInJail(player: Player): boolean
WacheField
+sendToJail(player: Player): void
FoodField
- factor: int
+applyDiceRollEffect(diceValue: int): void
GateField
-rentLevel: int

+calculateRent(): int
BuildingProperty
-houses: int
-hotel: boolean
+buildHouse(p: Player): void
+buildHotel(p: Player): void
TradeHandler
-offeredProperties: List<Property>
-offerMoney: int
-offerCards: List<Card>
+initiateTrade(trader: Player, tradee: Player): void
+offerProperty(property: Property): void
+offerMoney(amount: int): void
+finalizeTrade(): boolean
fields
monopoly

<<abstract>>
Field


- name: String

- id: int


+ accept(v: FieldVisitor, p: Player, g: Game)

PlayerHandler
- playerHandler
- players
2**6
GameBoard
~ fieldAt(id: int)
~ fieldId(f: Field)
messages
model
<<abstract>>
ClientMessage
+ accept(ServerInterpreter, int): void
<<abstract>>
ServerMessage
+ accept(ClientInterpreter, int): void
ConnectRequest
DisconnectRequest
PlayerReady
RollDice
BuyPropertyRequest
EndTurn
TradeOffer
TradeOffer
TradeResponse
ViewAssetsRequest
ConnectionResponse
PlayerDisconnected
GameEnd
DiceResult
MoveResult
BuyPropertyResponse
PayRent
UpdatePlayerAssets
NextPlayerTurn
JailEvent
GameEnd
GameStart
GameOver
PlayerStatusUpdate
TimeOutWarning
EventDrawCard
TradeRequest
ViewAssetsResponse
SoundTrigger
DeckHelper
- cards: Queue<Cards>
- shuffle(List<Cards>): void
+ drawCard(): Card
Card
- description: String
+ accept(v: CardVisitor, p: Player, g: Game): void
~ getDescription(): String
card
<<interface>>
CardVisitor
+ visit(c: Card, p: Player, g: Game)
<<interface>>
FieldVisitor
+ visit(f: FoodField, p: Player, g: Game)
+ visit(f: BuildingField, p: Player, g: Game)
+ visit(f: GateField, p: Player, g: Game)
+ visit(f: GulagField, p: Player, g: Game)
+ visit(f: EventField, p: Player, g: Game)
+ visit(f: TestStreckeField, p: Player, g: Game)
+ visit(f: WacheField, p: Player, g: Game)
<<abstract>>
PropertyField
- price: int
- rent: int
- owner: Player
- mortaged: boolean
~ setOwner(p: Player): void
- visual
Player
-name: String
-color: ColorRGBA
-accountBalance: int
-gamePiece: GamePiece
-properties: List<Property>
-getOutOfJailCard: int
-fieldId: int

+move(steps: int): void
+buyProperty(property: Property): void
+payRent(amount: int): void
+declareBankruptcy(): void

<<interface>>
ClientInterpreter


<<interface>>
ServerInterpreter



MonopolyApp


- MonopolyApp():


- escape(boolean): void
+ main(String[]): void
- makeServerConnection(): ServerConnection
+ simpleInitApp(): void
+ receivedEvent(InfoTextEvent): void
- close(): void
- makeSettings(): AppSettings
+ stop(boolean): void
~ confirmDialog(String, Runnable): void
+ closeApp(): void
+ simpleUpdate(float): void
+ requestClose(boolean): void
~ errorDialog(String): void
- attachGameSound(): void
- setupInput(): void
- setupStates(): void
- attachGameMusic(): void
+ receivedEvent(ClientStateEvent): void
- setupGui(): void


config: MonopolyAppConfig
dialogManager: DialogManager
infoText: String
executor: ExecutorService
gameLogic: ClientGameLogic
draw: Draw

MonopolyAppConfig


+ MonopolyAppConfig():


+ useGammaCorrection(): boolean
- makeColorRGBA(String): ColorRGBA
# convertToType(String, Class<?>): Object
+ fullScreen(): boolean
+ useRetinaFrameBuffer(): boolean


showStatistics: boolean
topColor: ColorRGBA
resolutionWidth: int
resolutionHeight: int
showSettings: boolean

MonopolyAppState


# MonopolyAppState():


+ showsDialog(): boolean
# enableState(): void
+ initialize(AppStateManager, Application): void
# disableState(): void


gameLogic: ClientGameLogic
enabled: boolean
app:MonopolyApp

<<interface>>
FileAction


+ run(File): void

GameMusic


+ GameMusic():


+ volumeInPreferences(): float
- loadSound(Application, String): AudioNode
+ initialize(AppStateManager, Application): void
+ enabledInPreferences(): boolean
+ toggleSound(): void


enabled: boolean
volume: float

GameSound


+ GameSound():


+ initialize(AppStateManager, Application): void
+ toggleSound(): void
+ enabledInPreferences(): boolean
- loadSound(Application, String): AudioNode
+ passGo(): void
+ cardEvent(): void

+ goJail(): void

+ rollDice(): void

+ earnMoney(): void

+ looseMoney(): void

+ acceptOffer(): void

+ refuseOffer(): void

+ winnerSound(): void

+ looserSound(): void

+ receivedEvent(SoundEvent): void


enabled: boolean

MapView


~ MapView(GameBoard, MonopolyApp):


- setupBackground(): void
+ mouseToModel(Vector2f): IntPoint
+ addGrid(): void
- gridLine(Position, Position): Geometry
~ unregister(): void
+ modelToView(float, float): Position
+ viewToModel(float, float): IntPoint


height: float
width: float
app: MonopolyApp
node: Node
map: MonopolyMap

MapViewSynchronizer


+ MapViewSynchronizer(MapView):


+ visit(Pawn): Spatial
+ visit(House): Spatial
+ visit(Hotel): Spatial

Menu


+ Menu(MonopolyApp):


- handle(FileAction, TextInputDialog): void
- fileDialog(FileAction, String): void
+ update(): void
- saveDialog(): void
- loadDialog(): void
+ update(float): void
+ escape(): void

NetworkDialog


~ NetworkDialog(NetworkSupport):


- connect(): void
- startServerInThread(): void
+ update(float): void
- initNetwork(): Object
- success(): void
- failure(Throwable): void
- openProgressDialog(): void

NetworkSupport


+ NetworkSupport(MonopolyApp):


+ send(ClientMessage): void
~ initNetwork(String, int): void
+ clientDisconnected(Client, DisconnectInfo): void
+ disconnect(): void
+ messageReceived(Client, Message): void
+ clientConnected(Client): void
+ connect(): void


connected: boolean
app: MonopolyApp

ParticleEffectFactory


~ ParticleEffectFactory(MonopolyApp):


~ createSmokeEmitter(): ParticleEmitter
+ createConfetti(): ParticleEmitter

GameBoardSynchronizer


+ SeaSynchronizer(MonopolyApp, Node, GameBoard):


- removePawn(Pawn): void
+ visit(Pawn): Spatial
- createBox(Pawn): Spatial
+ visit(House): Spatial
+ visit(Hotel): Spatial
- createPawn(Pawn): Spatial
- createHouse(House): Spatial
- createColoredMaterial(ColorRGBA): Material
- createHotel(Hotel): Spatial
- calculateRotationAngle(Rotation): float

HouseControl


+ HouseControl(House, Node):


# controlRender(RenderManager, ViewPort): void
# controlUpdate(float): void

PawnControl


+ PawnControl(Pawn, Node):


# controlRender(RenderManager, ViewPort): void
# controlUpdate(float): void

VolumeSlider


+ VolumeSlider(GameMusic):


+ update(): void

gui

MainSynchronizer


# GameBoardSynchronizer(GameBoard, Node):


# addExisting(): void
+ receivedEvent(ItemRemovedEvent): void
+ receivedEvent(ItemAddedEvent): void
# translate(Item): Spatial

client
MainMenu
+showMenu(): void
+hideMenu(): void
NewGameMenu
+createNewGame(): void
+cancel(): void
SettingMenu
+loadSettings(): void
+saveSettings(): void
+adjustVolume(level: int): void
Trading
+initiateTrade(): void
+confirmTrade(): void
+cancelTrade(): void
PropertyAdmin
+manageProperty(): void
+upgradeProperty(): void
+mortgageProperty(): void

MonopolyServer


+ run(): void
+ messageReceived(HostedConnection, Message): void
+ send(int, ServerMessage): void
- registerListeners(): void
+ main(String[]): void
+ connectionRemoved(Server, HostedConnection): void
- startServer(): void
+ connectionAdded(Server, HostedConnection): void
- exit(int): void
- processNextMessage(): void
- initializeSerializables(): void

<<record>>
ReceivedMessage


~ ReceivedMessage(ClientMessage, int):


~ process(ClientInterpreter): void
+ message(): ClientMessage
+ from(): int

server
<<interface>>
VisualVisitor<T>
+ visit(house :House): T
+ visit(playerFigure :PlayerFigure): T
+ visit(hotel: Hotel): T

Pawn


- rotation: Rotation
- status: Status
- position: Vector3f


+ accept(VisualVisitor): void
+ contains(IntPosition): boolean
+ toString(): String
+ moveTo(IntPosition): void
+ moveTo(int, int): void
+ rotated(): void
+ accept(Visitor<T>): T
+ contains(int, int): boolean

- updateRotation(Vector3f, Vector3f): void

IntPoint


+ IntPoint(int, int):
- IntPoint():


+ toString(): String
+ equals(Object): boolean
+ hashCode(): int


y: int
x: int

<<interface>>
IntPosition


y: int
x: int

<<interface>>
Item


+ accept(VoidVisitor): void
+ accept(Visitor<T>): T

Hotel


- rotation: Rotation
- status: Status
- position: Vector3f


+ accept(VisualVisitor): void
+ contains(IntPosition): boolean
+ toString(): String
+ moveTo(IntPosition): void
+ moveTo(int, int): void
+ rotated(): void
+ accept(Visitor<T>): T
+ contains(int, int): boolean

- updateRotation(Vector3f, Vector3f): void

House


- rotation: Rotation
- status: Status
- position: Vector3f


+ accept(VisualVisitor): void
+ contains(IntPosition): boolean
+ toString(): String
+ moveTo(IntPosition): void
+ moveTo(int, int): void
+ rotated(): void
+ accept(Visitor<T>): T
+ contains(int, int): boolean

- updateRotation(Vector3f, Vector3f): void

<<enumeration>>
Rotation


- Rotation():


+ dx(): int
+ rotate(): Rotation
+ values(): Rotation[]
+ dy(): int
+ valueOf(String): Rotation

<<record>>
ClientStateEvent


+ ClientStateEvent():


+ notifyListener(GameEventListener): void

<<interface>>
GameEvent


+ notifyListener(GameEventListener): void

<<interface>>
GameEventBroker


+ notifyListeners(GameEvent): void

<<interface>>
GameEventListener


+ receivedEvent(ClientStateEvent): void
+ receivedEvent(ItemRemovedEvent): void
+ receivedEvent(SoundEvent): void
+ receivedEvent(InfoTextEvent): void
+ receivedEvent(ItemAddedEvent): void

<<record>>
InfoTextEvent


+ InfoTextEvent(String):


+ notifyListener(GameEventListener): void
+ key(): String

<<record>>
ItemAddedEvent


+ ItemAddedEvent(Item, GameBoard):


+ map(): GameBoard
+ item(): Item
+ notifyListener(GameEventListener): void

<<record>>
ItemRemovedEvent


+ ItemRemovedEvent(Item, GameBoard):


+ item(): Item
+ map(): GameBoard
+ notifyListener(GameEventListener): void

<<enumeration>>
Sound


- Sound():


+ values(): Sound[]
+ valueOf(String): Sound

<<record>>
SoundEvent


+ SoundEvent(Sound):


+ notifyListener(GameEventListener): void
+ sound(): Sound

notification
GoField
frame
Das messages-Package organisiert Netzwerk-Nachrichten für die Kommunikation zwischen Client und Server und nutzt Interpreter zur Verarbeitung
Die Visitor-Interfaces ermöglichen flexible Aktionen auf Karten, Feldern und grafischen Objekten im Spiel
Das server-Package steuert die Serverlogik, verwaltet Verbindungen und verarbeitet Client-Nachrichten
Das card-Package verwaltet Ereignis- und Gemeinschaftskarten und ermöglicht deren flexiblen Einsatz im Spie
Das notification-Package verwaltet Spielereignisse und ermöglicht es, Listener bei bestimmten Aktionen wie Item-Änderungen oder Sounds zu benachrichtigen
Das fields-Package organisiert verschiedene Spielfelder und erlaubt spezifische Aktionen je nach Feldtyp
Das frame-Package steuert den gesamten Spielablauf im Monopoly-Spiel, verwaltet Spieler, das Spielfeld, Spielfiguren und deren Interaktionen. Es bildet die logische Basis des Spiels.
Das gui-Subpackage steuert die Benutzeroberfläche des Monopoly-Clients in der jMonkeyEngine, einschließlich Spielbrettanzeige, Menüs und Soundsteuerungen und Effekte
Das client-Package steuert die Hauptlogik des Monopoly-Clients in der jMonkeyEngine, einschließlich Netzwerk, Konfiguration, Sound und Benutzerinteraktionen in einer 3D-Umgebung
\ No newline at end of file diff --git a/uploads/Implementierungsphase/Abweichungen/2er.png b/uploads/Implementierungsphase/Abweichungen/2er.png new file mode 100644 index 0000000..7f77377 Binary files /dev/null and b/uploads/Implementierungsphase/Abweichungen/2er.png differ diff --git a/uploads/Implementierungsphase/Abweichungen/Hauptdarstellung_V2.0.png b/uploads/Implementierungsphase/Abweichungen/Hauptdarstellung_V2.0.png new file mode 100644 index 0000000..9d39047 Binary files /dev/null and b/uploads/Implementierungsphase/Abweichungen/Hauptdarstellung_V2.0.png differ diff --git a/uploads/Implementierungsphase/Abweichungen/Menü_Spielerlobby_V4.0.png b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerlobby_V4.0.png new file mode 100644 index 0000000..7158fa6 Binary files /dev/null and b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerlobby_V4.0.png differ diff --git a/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V3.0.png b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V3.0.png new file mode 100644 index 0000000..f8a4fa6 Binary files /dev/null and b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V3.0.png differ diff --git a/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V4.0.png b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V4.0.png new file mode 100644 index 0000000..1cd2dcd Binary files /dev/null and b/uploads/Implementierungsphase/Abweichungen/Menü_Spielerstellung_V4.0.png differ diff --git a/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg b/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg new file mode 100644 index 0000000..521358d --- /dev/null +++ b/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg @@ -0,0 +1,4 @@ + + + +

ActiveState


ActiveState


+ rollDice(): DiceResult
+ payBail(): void
+ useJailCard(): void

BankruptState


+ rollDice(): DiceResult
+ useJailCard(): void
+ payBail(): void

Board


+ toString(): String
- addItem(Item): void
+ clear(): void
+ isValid(IntPosition): boolean
- getItems(Class<T>): Stream<T>
+ isValid(int, int): boolean
- notifyListeners(GameEvent): void
+ remove(Item): void


items: List<Item>
width: int
height: int

BoardManager


+ getIndexOfField(Field): int
+ getFieldAtIndex(int): Field
- createBoard(): List<Field>


board: List<Field>

BoardSynchronizer


+ receivedEvent(ItemAddedEvent): void
# translate(Item): Spatial
+ receivedEvent(ItemRemovedEvent): void
# addExisting(): void

BuildingProperty


+ buildHotel(): boolean
+ removeHotel(): boolean
+ calcRent(): int
+ removeHouse(): boolean
+ accept(Player): void
+ buildHouse(): boolean


housePrice: int
allRent: List<Integer>
color: FieldColor

BuildingPropertyCard


+ close(): void
- createOverlayBackground(): Geometry


index: int

BuyCard


- createOverlayBackground(): Geometry
+ close(): void

BuyPropertyRequest


+ accept(ClientInterpreter, int): void


propertyId: int

BuyPropertyResponse


+ accept(ServerInterpreter): void


reason: String
infoTextKey: String
propertyName: String
successful: boolean

CameraController


+ update(float): void

Card


+ accept(DeckHelper): void


description: String
keyword: String

<<interface>>
CardVisitor


+ visit(Card): T

ClientGameLogic


+ received(TradeReply): void
+ received(EventDrawCard): void
+ notifyListeners(GameEvent): void
+ received(TradeRequest): void
+ removeListener(GameEventListener): void
+ received(JailEvent): void
+ received(TimeOutWarning): void
+ received(DiceResult): void
+ movePreview(IntPoint): void
+ loadMap(File): void
+ received(PlayerStatusUpdate): void
+ received(ViewAssetsResponse): void
+ playSound(Sound): void
+ received(NextPlayerTurn): void
+ received(GameStart): void
+ received(BuyPropertyResponse): void
+ addListener(GameEventListener): void
~ send(ClientMessage): void
+ received(GameOver): void
+ update(float): void


infoText: String
state: ClientState
board: Board

ClientGameLogicTest


+ testCancelGameCreation(): void
+ testOpenGameMenuWithESC(): void
+ testEnterPortNumber(): void
+ testSelectPlayerColor(): void
+ testOpenLobbyMenuWithESC(): void
+ testSumDiceResults(): void
+ testCancelPlayerLobby(): void
+ testMovePlayerAutomatically(): void
+ testOpenMainGameSettings(): void
+ testFreeParking(): void
+ setUp(): void
+ testGenerationDice(): void
+ testDetectDouble(): void
+ testGrayOutDiceAfterRoll(): void
+ testRollDice(): void
+ testTripleDoubleGulag(): void
+ testPlayerReadyConfirmation(): void
+ testDoubleRoll(): void
+ testTaxFieldCharges(): void
+ testDuplicateNameEntry(): void
+ testSelectPlayerToken(): void
+ testDecreaseStartingCapital(): void
+ testDisplayResults(): void
+ testDefaultPlayerName(): void
+ testEnterStartingCapital(): void
+ testAllPlayersReady(): void
+ testGoToJailField(): void
+ testIncreaseStartingCapital(): void
+ testEnterHostName(): void
+ testSelectOccupiedColor(): void
+ testSelectOccupiedToken(): void
+ testEnterDisplayName(): void

<<interface>>
ClientInterpreter


+ received(EndTurn, int): void
+ received(PlayerReady, int): void
+ received(ViewAssetsRequest, int): void
+ received(RollDice, int): void
+ received(BuyPropertyRequest, int): void
+ received(TradeOffer, int): void
+ received(TradeResponse, int): void

ClientLogicTest


+ testOpenSettingsFromMenu(): void
+ testNavigateToPlayOption(): void
+ testReturnToGame(): void
+ testMainMenuButtons(): void
+ testExitApplicationFromMenu(): void
+ testStartApplication(): void
+ testOpenGameMenuWithESC(): void
+ setUp(): void

ClientMessage


+ accept(ClientInterpreter, int): void

<<interface>>
ClientSender


+ send(ClientMessage): void

ClientState


~ loadMap(File): void
~ update(float): void
~ showTurn(): boolean
~ entry(): void
~ movePreview(IntPoint): void


name: String

<<record>>
ClientStateEvent


+ notifyListener(GameEventListener): void

CreateGameMenu


- goBackToStartMenu(): void
- addBackgroundImage(): void

DeckHelper


+ visit(Card): Void
- shuffle(): void
+ drawCard(): Card

Dice


- rollDice(): int

DiceResult


+ calcTotal(): int
+ accept(ServerInterpreter): void


doublets: boolean
rollResult: List<Integer>
infoTextKey: String

EndTurn


+ accept(ClientInterpreter, int): void

EventDrawCard


+ accept(ServerInterpreter): void


infoTextKey: String
cardDescription: String

EventField


+ drawCard(): Card
+ accept(Player): void

Field


+ accept(Player): void


name: String
id: int

<<enumeration>>
FieldColor


+ values(): FieldColor[]
+ valueOf(String): FieldColor


color: ColorRGBA

<<interface>>
FieldVisitor


+ visit(TestStreckeField): T
+ visit(EventField): T
+ visit(BuildingProperty): T
+ visit(GulagField): T
+ visit(GoField): T
+ visit(WacheField): T
+ visit(GateField): T
+ visit(FoodField): T
+ visit(FineField): T

Figure


+ hit(IntPosition): boolean
+ toString(): String
+ accept(Visitor<T>): T
+ contains(int, int): boolean
+ rotated(): void
+ accept(VoidVisitor): void
+ collidesWith(Figure): boolean
+ contains(IntPosition): boolean
+ hit(int, int): boolean
+ moveTo(int, int): void
+ moveTo(IntPosition): void


destroyed: boolean
maxX: int
length: int
maxY: int
damaged: Set<IntPoint>
y: int
minY: int
x: int
minX: int
rotation: Rotation
status: Status
rot: Rotation

FineField


+ accept(Player): void


fine: int

FoodField


+ calcRent(): int
+ accept(Player): void

FoodFieldCard


- createOverlayBackground(): Geometry
+ close(): void


index: int

GameBoardSynchronizer


- createColoredMaterial(ColorRGBA): Material
+ visit(Figure): Spatial
- createBox(Figure): Spatial
- calculateRotationAngle(Rotation): float

<<interface>>
GameEvent


+ notifyListener(GameEventListener): void

<<interface>>
GameEventBroker


+ notifyListeners(GameEvent): void

<<interface>>
GameEventListener


+ receivedEvent(SoundEvent): void
+ receivedEvent(ItemRemovedEvent): void
+ receivedEvent(InfoTextEvent): void
+ receivedEvent(ItemAddedEvent): void
+ receivedEvent(ClientStateEvent): void

GameMusic


+ volumeInPreferences(): float
- loadSound(Application, String): AudioNode
+ enabledInPreferences(): boolean
+ toggleSound(): void
+ initialize(AppStateManager, Application): void


volume: float
enabled: boolean

GameOver


+ accept(ServerInterpreter): void


infoTextKey: String
isWinner: boolean

GameSound


+ passStart(): void
+ tradeAccepted(): void
+ looser(): void
+ gulag(): void
+ toggleSound(): void
+ initialize(AppStateManager, Application): void
+ tradeRejected(): void
+ receivedEvent(SoundEvent): void
+ moneyCollect(): void
+ moneyLost(): void
+ eventCard(): void
+ diceRoll(): void
+ enabledInPreferences(): boolean
- loadSound(Application, String): AudioNode
+ winner(): void
+ button(): void


enabled: boolean

GameStart


+ accept(ServerInterpreter): void


infoTextKey: String
players: List<Player>

GateField


+ calcRent(): int
+ accept(Player): void

GateFieldCard


- createOverlayBackground(): Geometry
+ close(): void


index: int

GoField


+ accept(Player): void

GulagField


+ accept(Player): void

<<record>>
InfoTextEvent


+ key(): String
+ notifyListener(GameEventListener): void

IntPoint


+ toString(): String
+ hashCode(): int
+ equals(Object): boolean


x: int
y: int

<<interface>>
IntPosition


x: int
y: int

<<interface>>
Item


+ accept(VoidVisitor): void
+ accept(Visitor<T>): T

ItemAddedEvent


item: Item
board: Board

ItemRemovedEvent


item: Item
board: Board

JailEvent


+ accept(ServerInterpreter): void


goingToJail: boolean
infoTextKey: String

JailState


+ rollDice(): DiceResult
+ payBail(): void
+ useJailCard(): void

LimitedLinkedList


+ add(E): boolean


maxSize: int

LobbyMenu


- addBackgroundImage(): void
- toggleReady(Label): void
- goBackToCreateGame(): void

LobbyState


LobbyState


+ useJailCard(): void
+ payBail(): void
+ rollDice(): DiceResult

MapView


~ unregister(): void
- setupBackground(): void


board: Board
node: Node

MapViewSynchronizer


+ visit(Figure): Spatial
# enableState(): void
# disableState(): void

Menu


+ update(): void
+ escape(): void

MonopolyApp


- blockInputs(): void
+ errorDialog(String): void
+ stop(boolean): void
+ returnToMenu(): void
- setupInput(): void
- handleEscape(boolean): void
- makeSettings(): AppSettings
+ main(String[]): void
+ closeApp(): void
+ startServer(): void
+ simpleInitApp(): void
+ simpleUpdate(float): void
+ startTestWorld(): void
- setupGui(): void
+ unblockInputs(): void
+ receivedEvent(InfoTextEvent): void


isSettingsMenuOpen: boolean
monopolyServer: MonopolyServer
dialogManager: DialogManager
infoText: String
config: MonopolyAppConfig
serverConnection: ServerConnection
draw: Draw
networkSupport: NetworkSupport
executor: ExecutorService
gameLogic: ClientGameLogic

MonopolyAppConfig


# convertToType(String, Class<?>): Object
+ useRetinaFrameBuffer(): boolean
+ fullScreen(): boolean
+ useGammaCorrection(): boolean
- makeColorRGBA(String): ColorRGBA


resolutionHeight: int
showStatistics: boolean
resolutionWidth: int
topColor: ColorRGBA
showSettings: boolean

MonopolyAppState


# enableState(): void
# disableState(): void
+ initialize(AppStateManager, Application): void


app: MonopolyApp
gameLogic: ClientGameLogic
enabled: boolean

<<interface>>
MonopolyClient


+ enqueue(Runnable): void


gameLogic: ClientGameLogic
config: MonopolyClientConfig

MonopolyClientConfig


map: File

MonopolyConfig


port: int
mapHeight: int
mapWidth: int

MonopolyServer


- startServer(): void
- registerListeners(): void
+ connectionAdded(Server, HostedConnection): void
+ main(String[]): void
+ connectionRemoved(Server, HostedConnection): void
+ messageReceived(HostedConnection, Message): void
+ send(int, ServerMessage): void
- initializeSerializables(): void
+ run(): void
- processNextMessage(): void
- exit(int): void

NetworkDialog


- onFailure(Throwable): void
- openProgressDialog(): void
- connect(): void
- initNetwork(): Object
- initializeDialog(): void
+ update(float): void
- onSuccess(): void

NetworkSupport


+ startServerAndJoin(): void
+ connectToServer(String, int): void
+ disconnect(): void
+ messageReceived(Client, Message): void
+ connect(): void
+ send(ClientMessage): void
+ clientConnected(Client): void
+ clientDisconnected(Client, DisconnectInfo): void
~ initNetwork(String, int): void


app: MonopolyApp
connected: boolean

NextPlayerTurn


+ accept(ServerInterpreter): void


player: Player
infoTextKey: String

ParticleEffectFactory


Player


+ visit(TestStreckeField): Void
+ pay(int): void
+ move(int): int
+ visit(GateField): Void
+ earnMoney(int): void
+ removeJailCard(): void
~ rollDice(): DiceResult
+ visit(WacheField): Void
+ getNumProp(PropertyField): int
+ visit(FineField): Void
+ sellProperty(PropertyField): void
+ buyProperty(PropertyField): void
+ addJailCard(): void
+ payBail(): void
+ visit(GulagField): Void
+ movePos(int): int
+ visit(EventField): Void
+ visit(FoodField): Void
+ visit(GoField): Void
+ visit(BuildingProperty): Void
+ useJailCard(): void


name: String
accountBalance: int
numJailCard: int
properties: List<PropertyField>
id: int
fieldID: int
color: PlayerColor

<<enumeration>>
PlayerColor


+ values(): PlayerColor[]
+ valueOf(String): PlayerColor


color: ColorRGBA

PlayerHandler


~ removePlayer(Player): void
+ allPlayersReady(): boolean
~ getPlayerById(int): Player
~ getPlayerAtIndex(int): Player
~ nextPlayer(): Player
~ randomOrder(): void
~ addPlayer(Player): void
~ setPlayerReady(Player, boolean): void


logic: ServerGameLogic
playerCount: int
players: List<Player>

PlayerReady


+ accept(ClientInterpreter, int): void


figure: String
isReady: boolean
name: String

<<interface>>
PlayerState


+ useJailCard(): void
+ payBail(): void
+ rollDice(): DiceResult

PlayerStatusUpdate


+ accept(ServerInterpreter): void


status: String
playerName: String
infoTextKey: String
color: PlayerColor

PropertyField


+ calcRent(): int


price: int
hypo: int
owner: Player
mortgaged: boolean

RandomPositionIteratorTest


<<record>>
ReceivedMessage


~ process(ClientInterpreter): void
+ from(): int
+ message(): ClientMessage

Resources


+ lookup(String): String

RollDice


+ accept(ClientInterpreter, int): void

<<enumeration>>
Rotation


+ dx(): int
+ dy(): int
+ rotate(): Rotation
+ values(): Rotation[]
+ valueOf(String): Rotation

<<interface>>
SelectionActionListener


+ onSelectionChanged(T): void

<<interface>>
SelectionListener


+ selectionChanged(Spatial, Spatial): void

<<interface>>
ServerConnection


+ connect(): void
+ disconnect(): void


connected: boolean

ServerGameLogic


+ addPlayer(Player): Player
+ addPlayer(int): Player
+ received(EndTurn, int): void
~ send(Player, ServerMessage): void
+ received(BuyPropertyRequest, int): void
+ received(PlayerReady, int): void
+ received(RollDice, int): void
+ received(TradeOffer, int): void
+ received(ViewAssetsRequest, int): void
+ getPlayerById(int): Player
+ received(TradeResponse, int): void


boardManager: BoardManager
state: ServerState

ServerGameLogicTest


<<interface>>
ServerInterpreter


+ received(JailEvent): void
+ received(EventDrawCard): void
+ received(TimeOutWarning): void
+ received(GameOver): void
+ received(TradeRequest): void
+ received(NextPlayerTurn): void
+ received(DiceResult): void
+ received(BuyPropertyResponse): void
+ received(GameStart): void
+ received(TradeReply): void
+ received(PlayerStatusUpdate): void
+ received(ViewAssetsResponse): void

ServerMessage


+ accept(ServerInterpreter): void


infoTextKey: String

<<interface>>
ServerSender


+ send(int, ServerMessage): void

<<enumeration>>
ServerState


+ valueOf(String): ServerState
+ values(): ServerState[]

SettingsMenu


+ close(): void
- createOverlayBackground(): Geometry

<<enumeration>>
Sound


+ valueOf(String): Sound
+ values(): Sound[]

<<record>>
SoundEvent


+ notifyListener(GameEventListener): void
+ sound(): Sound

StartMenu


- createMonopolyLogo(MonopolyApp): void
- quitGame(): void
- createUnibwLogo(MonopolyApp): void
- openSettings(MonopolyApp): void
- startGame(MonopolyApp): void
+ createStartMenu(MonopolyApp): void

<<enumeration>>
Status


+ valueOf(String): Status
+ values(): Status[]

TestStreckeField


+ addMoney(int): void
+ accept(Player): void
+ collectMoney(): int

TestWorld


- setSkyColor(): void
+ initializeScene(): void
+ update(float): void
- createBoard(): void
- createCube(): void

Testhandbuch


+ testEnterHostName(): void
+ testOpenGameMenuWithESC(): void
+ testEnterDisplayName(): void
+ testDecreaseStartingCapital(): void
+ testPlayerReadyConfirmation(): void
+ testCollectMoneyFromGo(): void
+ testGameOverCondition(): void
+ testPurchaseProperty(): void
+ testTradeProperty(): void
+ testEnterStartingCapital(): void
+ testPlayerMovement(): void
+ testOpenStartMenu(): void
+ testSelectOccupiedToken(): void
+ testCancelPlayerLobby(): void
+ testSelectPlayerToken(): void
+ testDuplicateNameEntry(): void
+ testDeclareBankruptcy(): void
+ testPayRent(): void
+ testSelectOccupiedColor(): void
+ testEnterPortNumber(): void
+ testOpenSettingsFromMenu(): void
+ testStartGame(): void
+ testOpenLobbyMenuWithESC(): void
+ testExitApplicationFromMenu(): void
+ testDefaultPlayerName(): void
+ testMovePlayerOnDiceRoll(): void
+ testEnterPlayerLobby(): void
+ testStartApplication(): void
+ testCancelGameCreation(): void
+ testSelectPlayerColor(): void
+ testPassGo(): void
+ testIncreaseStartingCapital(): void
+ testNavigateToPlayOption(): void
+ testPlayerInJail(): void

TimeOutWarning


+ accept(ServerInterpreter): void


remainingTime: int
infoTextKey: String

Toolbar


- calculatePosition(int): Vector3f
- initializeButtons(): void
- rollDice(): void
- addTradeMenuButton(): void
- addPropertyMenuButton(): void
- createPositionDisplay(): BitmapText
- addEndTurnButton(): void
- addDiceRollButton(): Button
- updatePositionDisplay(): void
+ remove(): void
- moveCube(int): void

Toolbar2


- updatePositionDisplay(): void
- calculatePosition(int): Vector3f
- initializeButtons(): void
- moveCube(int): void
- addDiceRollButton(): void
- rollDice(): void
- addButton(String, int): void
- createPositionDisplay(): BitmapText
+ remove(): void

TradeHandler


- transferProperty(Player, Player, PropertyField): void
+ acceptTrade(Player, Player, int, List<PropertyField>, int, int, List<PropertyField>, int): void
+ rejectTrade(Player): void
- validateTrade(Player, int, List<PropertyField>, int, Player, int, List<PropertyField>, int): boolean
+ initiateTrade(Player, Player, int, List<PropertyField>, int, int, List<PropertyField>, int): boolean
- transferJailCards(Player, Player, int): void

TradeOffer


+ accept(ClientInterpreter, int): void


receiverId: int
tradeHandler: TradeHandler

TradeReply


+ accept(ServerInterpreter): void


initiatorId: int
infoTextKey: String
tradeHandler: TradeHandler

TradeRequest


+ accept(ServerInterpreter): void


infoTextKey: String
receiverId: int
tradeHandler: TradeHandler

TradeResponse


+ accept(ClientInterpreter, int): void


initiatorId: int
tradeHandler: TradeHandler

ViewAssetsRequest


+ accept(ClientInterpreter, int): void


player: Player

ViewAssetsResponse


+ getboard(): BoardManager
+ accept(ServerInterpreter): void


accountBalance: int
infoTextKey: String
jailCards: int
properties: List<PropertyField>

<<interface>>
Visitor


+ visit(Figure): T

<<interface>>
VoidVisitor


+ visit(Figure): void

WacheField


+ accept(Player): void

WaitForTurnState


WaitForTurnState


+ rollDice(): DiceResult
+ useJailCard(): void
+ payBail(): void

build


+ getProperty(String): Object
+ main(String[]): void
+ run(): Object
+ invokeMethod(String, Object): Object
+ setProperty(String, Object): void


metaClass: MetaClass

1
1
eventBroker
1
1
board
1
1
color
1
1
app
1
1
app
1
1
board
1
1
clientSender
1
1
state
«create»
1
1
logic
1
1
app
1
1
rot
1
1
status
1
1
app
1
1
app
1
1
particleFactory
1
1
app
1
1
board
1
1
item
1
1
board
1
1
item
1
1
app
1
1
board
1
1
app
1
1
app
1
1
logic
1
1
config
1
1
monopolyServer
1
1
networkSupport
1
1
serverConnection
1
1
settingsMenu
1
1
testWorld
1
1
app
1
1
config
1
1
logic
1
1
network
1
1
app
1
1
player
1
1
app
1
1
rollResult
1
1
figure
1
1
color
1
1
handler
1
1
state
1
1
logic
1
1
color
1
1
owner
1
1
boardManager
1
1
config
1
1
playerHandler
1
1
serverSender
1
1
state
1
1
app
1
1
app
1
1
cameraController
1
1
app
1
1
app
1
1
app
1
1
tradehandler
1
1
tradeHandler
1
1
tradehandler
1
1
tradeHandler
1
1
player
1
1
board
\ No newline at end of file