Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 07856bdf rédigé par ArKeid0s's avatar ArKeid0s
Parcourir les fichiers

Moved detailed conception to the right section,

added component diagram

Co-authored-by: default avatarGuiPoignant <GuiPoignant@users.noreply.github.com>
parent 7969317d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #56019 réussi
......@@ -2,6 +2,8 @@
== Relations et interfaces des composants
=== Relation et interfaces de tous les composants
////
[plantuml, global-interfaces, svg]
....
include::../partials/interfaces-diagrams/global-interfaces.puml[]
......@@ -24,65 +26,73 @@ include::../partials/interfaces-diagrams/client-interfaces.puml[]
....
include::../partials/interfaces-diagrams/cards-interfaces.puml[]
....
////
== Responsabilités des composants
=== Client
Intéractions avec l'application web
Intéractions avec l'application web et affichage du jeu chez le client.
=== Middlwares
=== ClientMiddleware
Composant contenant les deux Middlwares suivant, permettant de s'occuper de la communication distante entre les deux.
==== 1.ClientMiddleware
Middleware permettant au client web de communiquer avec le serveur, traduisant les méthodes en messages `WebSocket` et en les transmettant au `ServerMiddleware`.
Il permet aussi au serveur de communiquer avec le client web en traduisant les messages `WebSocket` du `ServerMiddleware` en méthode `Client`.
=== ServerMiddleware
==== 2.ServerMiddleware
Middleware permettant au serveur de communiquer avec le client web, traduisant les méthodes en messages `WebSocket` et en les transmettant au `ClientMiddleware`.
Il permet aussi au client web de communiquer avec le serveur en traduisant les messages `WebSocket` du `ClientMiddleware` en méthode `Server`
=== Server
Orchestrateur du jeu `7 Wonders`, il gère les interactions entre les `Clients` et le `Game`.
Ce composant est composé des classes suivantes :
=== Player
==== 1.Player
Classe permettant de traiter les données sensibles relatives aux joueurs.
=== PlayerPublic
==== 2.PlayerPublic
Classe permettant de traiter les données relatives aux joueurs.
=== Game
==== 3.Game
Classe permettant de traiter les données sensibles relatives à une partie du jeu `7 Wonders`. Cette classe sera utilisée pour envoyer les données de jeu à un joueur précis.
=== GamePublic
==== 4.GamePublic
Classe permettant de traiter les données relatives à une partie du jeu `7 Wonders`. Cette classe sera partagée à tous les `Clients` pour mettre à jour les plateaux de jeu.
=== Player
==== 5.Player
Classe permettant de traiter les données relatives aux joueurs
=== PlayerPublic
*TODO*
==== 6.PlayerPublic
Classe permettant de publier les données d'un joueur sans contenir les données privée de ce joueur.
=== Card
==== 7.Card
Cette classe permet de gérer les différentes cartes du jeu.
=== Wonder
==== 8.Wonder
Cette classe permet de gérer les merveilles.
=== WonderEffect
==== 9.WonderEffect
Cette énumeration sert a lister les effets de `Wonder`.
=== Age
==== 10.Age
Cette énumeration liste les age possibles.
=== Action
==== 11.Action
Cette énumeration sert a lister les actions possibles lorsque l'on sélectionne une carte.
=== GameState
==== 12.GameState
Cette énumeration sert a définir l'état de la `Game`.
=== Resource
==== 13.Resource
Cette énumeration sert a lister les différentes ressources utilisables en jeu.
== Diagrammes de séquences
=== Connexion au serveurs de 2 joueurs
[plantuml, connect-sequence-diagram, svg]
....
......
@startuml component-diagram
package "GameServer" {
component Server
component Game
component Wonder
component Player
Server -- Game
Game -- Player
Player -- Wonder
}
interface IServer
' Les nommes differements ca fait pas comme si 2 interfaces differentes ?
interface IClientA
interface IClientB
package "Client Middleware" {
component ClientMiddlewareA
component ClientMiddlewareB
component ServerMiddleware
ClientMiddlewareA -down- ServerMiddleware : WebSocket
ClientMiddlewareB -down- ServerMiddleware : WebSocket
}
package "Clients" {
component ClientA
component ClientB
ClientA -down- IClientA
ClientMiddlewareA -up-( IClientA
ClientB -down- IClientB
ClientMiddlewareB -up-( IClientB
}
GameServer -up- IServer
ServerMiddleware -down-( IServer
@enduml
\ No newline at end of file
......@@ -56,13 +56,29 @@ NOTE: TODO!
NOTE: TODO!
=== Interface utilisateur
NOTE: TODO!
=== Interface logicielle
NOTE: TODO!
=== Relation et interfaces de tous les composants
[plantuml, global-interfaces, svg]
....
include::../partials/interfaces-diagrams/global-interfaces.puml[]
....
=== Relation et interfaces côté Serveur
[plantuml, server-interfaces, svg]
....
include::../partials/interfaces-diagrams/server-interfaces.puml[]
....
=== Relation et interfaces côté Client
[plantuml, client-interfaces, svg]
....
include::../partials/interfaces-diagrams/client-interfaces.puml[]
....
=== Relation et interfaces des Cartes
[plantuml, cards-interfaces, svg]
....
include::../partials/interfaces-diagrams/cards-interfaces.puml[]
....
=== Interface ou protocoles de communication
......@@ -76,7 +92,6 @@ NOTE: TODO!
NOTE: Décrivez dans cette partie les patrons logiciels utilisés pour mettre en œuvre l'application.
=== Patron de conception "A"
NOTE: TODO!
......
......@@ -43,7 +43,7 @@ enum LookAt {
ITSELF
}
interface Card {
Class Card {
- age: Age
- nbPlayer: int
- name: String
......@@ -66,18 +66,18 @@ interface Card {
+ doAction(game : Game) : void
}
' Divide prices of bonus Resources
interface CardDividePrice extends Card
interface CardCheckItems extends Card {
Class CardDividePrice extends Card
Class CardCheckItems extends Card {
' Give bonus when checkItems are found
- checkItems: List<ActionItem>
' at specific location (neighbors, itself)
- lookAt: List<LookAt>
}
interface CardChooseBonus extends Card {
Class CardChooseBonus extends Card {
' Has to choose 1 bonus by round
- canBeBought: boolean
}
interface CardSymbol extends Card {
Class CardSymbol extends Card {
- symbol: Symbol
}
@enduml
\ No newline at end of file
@startuml
interface Client {
' Variables
- clientMiddleware: ClientMiddleware
- game: GamePublic
- player: Player
' Methods
interface IClient {
' Methods
+ refreshGameState(): Pair<GameState, int>
+ joinGame(String userName): void
+ playCard(String playerId, Card card, Action action): boolean
......@@ -14,6 +10,13 @@ interface Client {
' Check if card needs player to buy resources from neighbors
- canPlayCard(card: Card): boolean
}
class Client implements IClient {
' Variables
- clientMiddleware: ClientMiddleware
- game: GamePublic
- player: Player
}
note left of Client::game
All data to display the game
end note
......@@ -21,7 +24,7 @@ note left of Client::refreshGameState
Change menu data, status of the game (ex: number of players)
end note
interface ClientMiddleware {
class ClientMiddleware {
' Constant
- server: ServerMiddleware
' Variables
......
@startuml
interface ServerMiddleware {
' Variables
- clients: Map<String, ClientMiddleware>
- server: Server
interface IServerMiddleware {
' Methods
+ refreshClient (Player player): void
+ refreshAllClients (GamePublic gamePublic): void
......@@ -18,13 +14,13 @@ note top of ServerMiddleware
calls to Java methods
end note
interface Server {
class ServerMiddleware implements IServerMiddleware {
' Variables
- game: Game
- serverMiddleware: ServerMiddleware
' All the cards available for the game
- allCards: List<Card card>
- clients: Map<String, ClientMiddleware>
- server: Server
}
interface IServer {
' Methods
+ joinGame (String userId, String userName): boolean
+ leaveGame (String userId): void
......@@ -40,9 +36,15 @@ note right of Server::getRoomState
Get the state of the game Room
end note
class Server implements IServer{
' Variables
- game: Game
- serverMiddleware: ServerMiddleware
' All the cards available for the game
- allCards: List<Card card>
}
interface GamePublic {
class GamePublic {
- currentAge: Age
- gameTurn: int
- currentAgeCards: List<Card>
......@@ -53,7 +55,7 @@ interface GamePublic {
}
interface Game extends GamePublic {
class Game extends GamePublic {
- players: List<Player>
'Methods
......@@ -101,7 +103,7 @@ interface Game extends GamePublic {
}
interface PlayerPublic {
class PlayerPublic {
- userId: String
- userName: String
'
......@@ -126,7 +128,7 @@ interface PlayerPublic {
}
interface Player extends PlayerPublic {
class Player extends PlayerPublic {
' Available cards to choose in
- handCards: List<Card>
......@@ -137,7 +139,14 @@ interface Player extends PlayerPublic {
+ getPlayerPublic(): PlayerPublic
}
interface Wonder {
interface IWonder {
' Change Wonder stage
+ upgradeWonder(): void
' Calculate the sum of victory points at the end
+ calculateVictoryPoints(): int
}
class Wonder implements IWonder {
- priceStage1: Pair<Resource, int>
- priceStage2: Pair<Resource, int>
- priceStage3: Pair<Resource, int>
......@@ -147,11 +156,6 @@ interface Wonder {
- victoryPointStage3: int
- currentStage: int
- defaultResource: Resource
' Change Wonder stage
+ upgradeWonder(): void
' Calculate the sum of victory points at the end
+ calculateVictoryPoints(): int
}
enum WonderEffect {
......@@ -198,7 +202,7 @@ enum Resource {
PAPYRUS
}
interface Card
class Card
ServerMiddleware -- Server
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter