Commit cc082cdf authored by Alexandre DESMONTILS's avatar Alexandre DESMONTILS
Browse files

finitions de la conception préliminaire

parent 8d4f1def
......@@ -2,6 +2,7 @@
== Création d'une partie
////
.Join game
[plantuml]
....
......@@ -23,11 +24,13 @@ par
player6 -> game : playerId := join(id, six)
end
....
////
.Questions ouveres (à faire)
- Les joeurs ne peuvent pas envcoyer juste une `id`, ils doivent aussi envoyer une adress/port pour que le serveur puisse les contacter
.Questions ouvertes (à faire)
- Les joueurs ne peuvent pas envoyer juste une `id`, ils doivent aussi envoyer une adress/port pour que le serveur puisse les contacter
- Le serveur doit prévenir les joueurs du début de la partie.
////
.L'interface GameServer
[plantuml]
....
......@@ -36,3 +39,203 @@ interface GameServer {
join(gameId : Integer): Integer
}
....
////
.Join game
[plantuml]
....
participant "__one:Player__" as player1
participant "__two:Player__" as player2
participant "__three:Player__" as player3
participant "__four:Player__" as player4
participant "__five:Player__" as player5
participant "__six:Player__" as player6
participant "__game:GameServer__" as game
player1 -> game : id := createGame(6)
par
player1 -> game : playerId := join()
player2 -> game : playerId := join()
player3 -> game : playerId := join()
player4 -> game : playerId := join()
player5 -> game : playerId := join()
player6 -> game : playerId := join()
end
....
.L'interface GameServer
[plantuml]
....
interface GameServer {
createGame(numberOfPlayers : Integer): void
join(): Integer
wantRole(role : String
placerCréature(lieu : String) : void
placementArtémia(lieu : String) : void
placementCible(lieu : String) : void
answerCardTraque(carte : CarteTraque) : void
answerCardSurvie(carte : CarteSurvie) : void
answerCardLieu(lieux : CarteLieu) : void
getDefausse(id : entier, cartes : List<Carte>) : void
lacherPrise() : void
}
....
////
TODO
suivre exemple du premier bloc RMQ
et donner la meme forme aux autres
////
.Phase 1 (exemple à 3 joueurs)
[plantuml]
....
participant "__one:Creature__" as creature
participant "__game:GameServer__" as game
participant "__two:Traqué__" as player2
participant "__three:Traqué__" as player3
game ->> creature : id := askCardTraque()
activate creature
note left of creature
RMQ: ce bloc
game <-> creature
est un exemple à suivre
validé par le prof
( appels asynchrones,
avec la 'barre de temps
d'activation', )
end note
game -> player2 : id := askCardSurvie()
activate player2
game -> player3 : id := askCardSurvie()
activate player3
par
creature ->> game : setCard("ForceField")
deactivate creature
player2 -->> game : id := setCard("Adrenaline")
deactivate player2
player3 -->> game : id := setCard(null)
note right of player3 : exemple où player3 ne \n joue pas de carte survie
deactivate player3
end
game -> player2 : id := askCardLieu()
activate player2
game -> player3 : id := askCardLieu()
activate player3
player3 -> game : id := lacherPrise()
note right
lacherPrise() et resister()
ont le même comportement ici
end note
par
player2 -->> game : id := setLieu("Jungle")
deactivate player2
player3 -->> game : id := setLieu("Rover")
deactivate player3
end
....
.Phase 2
[plantuml]
....
participant "one:Traqué" as player1
participant "game:GameServer" as game
participant "two:Créature" as player2
par
game ->> player1 : id := askCardSurvie()
activate player1
game ->> player2 : id := askCardTraque()
activate player2
note right: Jeton cible/Artemia placé avec l'activation du pouvoir carte traque
player1 --> game : set("Vortex")
deactivate player1
player2 --> game : set("Clone")
deactivate player2
game -> player2 : placerCreature()
player2 -> game : placeCreature(["Le Rover";""])
game -> player2 : placerArtemia()
player2 -> game : placeArtemia(["L'Antre";""])
end
....
////
- Jeton cible/Artemia placé avec l'activation du pouvoir carte traque
- Si le jeton Artemia a déjà été placé par une carte traque retourne false ou si le pion secours n'est pas placé sur une case permettant le placement de jeton Artemia
////
.Phase 3 (exemple 3 à joueurs)
[plantuml]
....
participant "__one:Creature__" as creature
participant "__game:GameServer__" as game
participant "__two:Traqué__" as player2
participant "__three:Traqué__" as player3
game -> creature : id := askCardTraque()
game -> player2 : id := askCardSurvie()
game -> player3 : id := askCardSurvie()
par
creature -->> game : String := setCard("Acharnement")
player2 -->> game : String := setCard("Alerte")
player3 -->> game : String := setCard(null)
end
game <<->> creature : <interactions liées aux cartes Lieu, Traque et Survie>
game <<->> player2 : <interactions liées aux cartes Lieu, Traque et Survie>
game <<->> player3 : <interactions liées aux cartes Lieu, Traque et Survie>
note right : TODO Interaction Incomplète!
....
.Phase 4
[plantuml]
....
participant "__one:Traqué__" as player1
participant "__game:GameServer__" as game
participant "__two:Créature__" as player2
par
game -> player1 : id := askCardSurvie()
activate player1
game -> player2 : id := askCardTraque()
activate player2
player1 --> game : set("Brouillage")
deactivate player1
player2 --> game : set("Angoisse")
deactivate player2
end
....
////
TODO
il y a des valeurs de retour dans les methodes
des interfaces, elle ne sont pas toutes utiles.
A réécrire
////
.L'interface Traqué
[plantuml]
....
interface Traqué {
setCard(card : String) : void
setLieu(lieu : String) : void
getLieuxDefausse() : void
perdrePionsVolonte(nb : entier)
}
....
.L'interface Créature
[plantuml]
....
interface Creature {
setCard(Card : String): void
placerCreature(lieu : String) : void
placerArtemia(lieu : String) : void
placerCible(lieux : [String, String]) : void
}
....
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