Commit 37cc8152 authored by Gries Robin's avatar Gries Robin
Browse files

conception detaillé, invariant creature et traqué, opération créature

parent 25480c77
...@@ -213,9 +213,9 @@ end ...@@ -213,9 +213,9 @@ end
//// ////
TODO TODO
il y a des valeurs de retour dans les methodes il y a des valeurs de retour dans les méthodes
des interfaces, elle ne sont pas toutes utiles. des interfaces, elle ne sont pas toutes utiles.
A réécrire A ré-écrire
//// ////
.L'interface Traqué .L'interface Traqué
...@@ -226,6 +226,8 @@ interface Traqué { ...@@ -226,6 +226,8 @@ interface Traqué {
setLieu(lieu : String) : void setLieu(lieu : String) : void
getLieuxDefausse() : void getLieuxDefausse() : void
perdrePionsVolonte(nb : entier) perdrePionsVolonte(nb : entier)
resister() : void
lacherPrise() : void
} }
.... ....
......
...@@ -23,9 +23,20 @@ package game { ...@@ -23,9 +23,20 @@ package game {
class "Player" as player { class "Player" as player {
id : Integer {id} id : Integer {id}
} }
class "Creature" as creature {
}
class "Traque" as traque {
}
GameServer <|-- controller GameServer <|-- controller
controller *- "[*] games" game : \t\t\t controller *- "[*] games" game : \t\t\t
game *-- "[0..7] players" player game *-- "[0..7] players" player
creature --|> player
traque --|> player
} }
note right of game: Uncompleted! note right of game: Uncompleted!
.... ....
...@@ -36,10 +47,16 @@ state Game { ...@@ -36,10 +47,16 @@ state Game {
[*] --> Created [*] --> Created
Created -> Started : start() Created -> Started : start()
Started -> Phase1 : \t Started -> Phase1 : \t
Phase1 --> [*] Phase1 --> Phase2
Phase2 --> Phase3
Phase3 --> Phase4
Phase4 --> Phase1 : NOT victory condition
Phase4 --> [*] : victory condition
}
} }
note right of Game : Uncompleted! note right of Game : Uncompleted!
.... ....
victory condition = `"Game::secours == 0 OR Game::assimilation == 0"`
=== Opérations du GameServerController === Opérations du GameServerController
...@@ -79,3 +96,66 @@ partition Game::run() { ...@@ -79,3 +96,66 @@ partition Game::run() {
stop stop
} }
---- ----
=== Opérations de Creature
.L'interface Créature
[plantuml]
....
interface Creature {
setCard(Card : String): void
placerCreature(lieu : String) : void
placerArtemia(lieu : String) : void
placerCible(lieux : [String, String]) : void
}
....
.Placer le jeton Creature
[source,OCL]
----
Creature::placerCreature(String : lieu) : void
pre:
Game::phase = 2 and self.position = null
post:
self.position = lieu
----
.Placer le jeton Artemia
[source,OCL]
----
Creature::placerArtemia(String : lieu) : void
pre:
Game::phase = 2 and self.artemia = null
post:
self.artemia = lieu
----
.Placer le jeton Cible
[source,OCL]
----
Creature::placerCible({String, String} : lieux) : void
pre:
Game::phase = 2 and (self.cible = null or self.cible->size() = 0)
post:
self.cible = lieux
----
== Invariant de Traque
.invariant sur les cartes Lieu en mains
[source,OCL]
----
//pas de doublon dans les cartes Lieu en main
Context Traque
inv: self.carteLieu->isUnique(each : Lieu | each.name)
----
.invariant sur les pions Volonté
[source,OCL]
----
Context Traque
inv: self.volonté >= 0 and self.volonté <= 3
----
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