Commit 5264a142 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
////
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.
A réécrire
A ré-écrire
////
.L'interface Traqué
......@@ -226,6 +226,8 @@ interface Traqué {
setLieu(lieu : String) : void
getLieuxDefausse() : void
perdrePionsVolonte(nb : entier)
resister() : void
lacherPrise() : void
}
....
......
......@@ -23,9 +23,20 @@ package game {
class "Player" as player {
id : Integer {id}
}
class "Creature" as creature {
}
class "Traque" as traque {
}
GameServer <|-- controller
controller *- "[*] games" game : \t\t\t
game *-- "[0..7] players" player
creature --|> player
traque --|> player
}
note right of game: Uncompleted!
....
......@@ -36,10 +47,16 @@ state Game {
[*] --> Created
Created -> Started : start()
Started -> Phase1 : \t
Phase1 --> [*]
Phase1 --> Phase2
Phase2 --> Phase3
Phase3 --> Phase4
Phase4 --> Phase1 : NOT victory condition
Phase4 --> [*] : victory condition
}
}
note right of Game : Uncompleted!
....
victory condition = `"Game::secours == 0 OR Game::assimilation == 0"`
=== Opérations du GameServerController
......@@ -79,3 +96,67 @@ partition Game::run() {
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]
----
//bornes des points de Volonté
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