Commit f3554732 authored by Mamadou Diallo's avatar Mamadou Diallo
Browse files

Commit de la conception préliminaire

parent 1e7537cb
= Conception détaillée
== Game Server
.GameSever
[plantuml]
....
interface GameServer {
createGame(numberOfPlayers : Integer): Integer
join(gameId : Integer): Integer
}
package game {
class "GameServerController" as controller {
createGame(numberOfPlayers : Integer): Integer
join(gameId : Integer): Integer
}
class "Game \n[Thread]" as game {
id : Integer {id}
numberOfPlayers : Integer
}
class "Player" as player {
id : Integer {id}
}
GameServer <|-- controller
controller *- "[*] games" game : \t\t\t
game *-- "[0..7] players" player
}
note right of game: Uncompleted!
....
[plantuml]
....
state Game {
[*] --> Created
Created -> Started : start()
Started -> Phase1 : \t
Phase1 --> [*]
}
note right of Game : Uncompleted!
....
=== Opérations du GameServerController
.Create Game
[source,OCL]
----
GameServerController::createGame(numberOfPlayers : Integer): Integer
pre:
numberOfPlayers > 1 and numberOfPlayers <= 7
post:
self.games -> exists(each | each.isOclNew())and
game.oclinState(Created)
----
.Join Game
[source,OCL]
----
GameServerController::join(gameId : Integer): Integer
pre:
self.games -> exists(each | each.id = gameId)
post:
let game = self.games->select(id = gameId)->first() in
game.players->exists(each| each.isOclNew())
----
.Start Game
[plantuml]
----
partition Game::run() {
start
while (enough players?)
:JoinRequest<
:handleRequest();
endwhile
:Game Start>
stop
}
----
@startuml
actor Créature
participant ClientWeb1
database Server
participant ClientWeb2
actor Traqué
Créature -> Server : Demande à jouer
Server -> Server : Cherche une partie
Server -> Server : Crée une partie s'il n'y a aucune
Server -> Créature : Envoie l'ID de la partie
Traqué -> Server : Demande à rejoindre la parite
Server -> Traqué : Envoie l'ID de la partie
Créature -> Server : initialise ses informations
Traqué -> Server : initialise ses informations
Server -> Créature : Donne le tour
Créature -> Créature : joue son tour et fait des modifs locales
Créature -> Server : Envoie ses modifications
Server -> Server : Stocke les infos reçues
Server -> Server : Vérifie s'il y a un gagnant/perdant
Server -> Traqué : impacte des actions de la Créature
Server -> Traqué : Donne le tour
Traqué -> Traqué : Joue son tour et fait des modifs locales
Traqué -> Server : Envoie ses modifications
Server -> Server : Stocke les infos reçues
Server -> Server : Vérifie s'il y a un gagnant/perdant
Server -> Créature : impacte des actions du Traqué
Server -> Server : Répéter jusqu'à gagnant/perdant/fin de parite
@enduml
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment