@startuml interface Game{ start() createGameBoard() attributeColors() determinatePlayersOrder() beginningPlacement() distributeResources(Map<Resources,Integer>) } interface Gameboard{ determinateResources(Integer) : Map<Color,Map<Resources,Integer>> } interface Player{ playTurn(GameBoard) addToScore(Integer) addToNbKnights(Integer) constructRoad() constructColony() constructCity() startExchangeWithPlayer() startExchangeWithBank() drawDevelopmentCard() } interface Dice{ rollDice() : Integer } interface LandTile{ getResource() : Resources } interface Infrastructure{ setToCity() } interface Port{ isSpecialised() : boolean getSpecialisation() : Map<Resources,Integer> } interface DevelopmentCard{ playCard(Player) } interface Build{ updateGameBoard() } interface Trade{ selectResources(Map<Resources, Integer>) : Map<Resources, Integer> sendResourcesToPlayer(Map<Resources, Integer>) sendResourcesToBank(Map<Resources, Integer>) } interface IGame{}
IGame --|> Build IGame --|> DevelopmentCard IGame --|> Player IGame ---|> Gameboard IGame --|> Game IGame --|> Trade IGame ---|> Port IGame ---|> Infrastructure IGame ---|> LandTile IGame ---|> Dice @enduml