Game Classes
%%{init: {"theme": "default"}%%
classDiagram
direction LR
Game "1" --> "1" GameMap : contains
Game "1" --> "*" Player : contains
Game "1" --> "1" Dice : contains
Game "1" --> "1" Deck : contains
class Game {
- GameMap map
- List~Player~ players
- Player currentPlayer
- int roundCount
}
class Dice {
- int sides
+ roll(): int
+ roll(int times): int
}
Deck --> ChanceCardFactory : uses
Deck --> ArmyCardFactory : uses
Deck --> TerritoryCardFactory : uses
ChanceCardFactory --> ChanceCard : creates
ArmyCardFactory --> ArmyCard : creates
TerritoryCardFactory --> TerritoryCard : creates
class Deck {
- List~Card~ cards
+ createDeck(): Deck
+ createArmyCards(): void
+ createTerritoryCards(): void
+ isEmpty(): boolean
+ checkDeck(): void
+ shuffle(): void
+ drawChanceCard(): ChanceCard
+ drawCard(): Card
}
Infantry --|> Army : extends
Mercenary --|> Infantry : extends
Cavalry --|> Army : extends
Artillery --|> Army : extends
ArmyFactory --> Army : creates
class ArmyFactory {
<<interface>>
}
class Army {
- ArmyType type
- int value
}
class Infantry {
...
}
class Mercenary {
...
}
class Cavalry {
...
}
class Artillery {
...
}
Army *--> ArmyType
class ArmyType {
<<enumeration>>
Infantry
Cavalry
Artillery
Mercenary
}
ArmyCard --|> Card : extends
TerritoryCard --|> Card : extends
ChanceCard --|> Card : extends
class Card {
- CardType type
}
class TerritoryCard {
- Territory territory
+ getContinent(): Continent
}
class ArmyCard {
- ArmyType armyType
}
class ChanceCard {
- ChanceType type
- String name
- String description
+ getEffect(): ChanceCardEffect
}
Card *--> CardType
class CardType {
<<enumeration>>
Army
Territory
Chance
}
ChanceCard *--> ChanceType
class ChanceType {
<<enumeration>>
Revolt
NuclearStrike
Sabotage
DiplomaticImmunity
Mercenaries
Revolution
Draft
Bombardment
Reinforcements
}
class ChanceCardEffect {
<<interface>>
+ applyEffect(): void
}
ChanceCard --> ChanceEffects : uses
ChanceEffects --> ChanceCardEffect : produces
class ChanceEffects {
+ static all: List~ChanceCardEffect~
+ static allExcept(ChanceType...types): List~ChanceCardEffect~
+ static getFromType(ChanceType type): ChanceCardEffect
+ static getRandom(): ChanceType
+ static getRandom(ChanceType...types): ChanceType
}
ChanceCardEffect --> Game : applies