analyse.adoc 12.7 KB
Newer Older
Gerson Sunyé's avatar
Gerson Sunyé committed
1
2
= Analyse du domaine

3
== Organisation
Gerson Sunyé's avatar
Gerson Sunyé committed
4

5
=== Plateau
Gerson Sunyé's avatar
Gerson Sunyé committed
6

Samuel PENAULT's avatar
Samuel PENAULT committed
7
Le plateau contient le score de la partie : il est composé de 31 cases :
8
9
10
11
12
13
14
15
16
n cases pour le pion secours et m cases pour le pion assimilation.
La partie se fini lorsque l'un de ces deux pions arrive sur la case étoile.
Le plateau a deux versions (recto verso) avec des dispositions différentes du jeton arthémia en fin de partie.

[plantuml, graphe-plateau, png]
....
hide circle
skinparam monochrome true

17
18
19
20
class Plateau {
    PlacementPionSecours : entier
    PlacementPionAssimilation : entier
}
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96

class PlateauRecto

class PlateauVerso

Plateau <|-- PlateauRecto : \t\t
Plateau <|-- PlateauVerso : \t\t


....

=== Les cartes

La table de jeu contient également 10 cartes lieux disposées en deux rangées
de 5 cartes posées côtes a côtes dans l'ordre numérique. Chacune possède
un effet particulier qui pourra être activé en phase 3.
Nous distinguerons les cartes traques et survies des cartes lieux.
// parler de la défausse et de la pioche distinguable survie/traque et lieux

[plantuml, carte-graphe, png]
....
hide circle
skinparam monochrome true

class Carte
class "Carte Lieux" as Lieux
class "Carte Survie" as Survie
class "Carte Traque" as Traque
class "Carte Antre" as Antre {
    operation()
}

Carte <|-- Lieux : \t\t
Carte <|-- Traque : \t\t
Carte <|-- Survie : \t\t
Lieux <|-- Antre : \t\t
....

==== Les cartes survie et traque
Ce sont des cartes qui sont posables dans la partie, à une phase définie sur la carte.
Celles-ci ont des effets particuliers qui peuvent influencer les règles de base.
La défausse est respectivement unique pour les deux types de cartes, et de même pour la pioche.
Une fois la pioche vide, la défausse est mélangée et remise en pioche.

==== Les cartes Lieux
Ce sont les cartes qui vont désigner le placement des traqués et leur donner des effets liés au lieu représenté.
S'il y a un ou plusieurs des jetons de la créature l'effet est altéré. La défausse est spécifique à chaque joueur et face visible.
la pioche réserve contenant les lieux supplémentaires est accessible uniquement via une carte survie. Une fois la réserve vide,
elle ne peut être remplie à nouveau.

[plantuml, graphe-carteLieux-joueur, png]
....
hide circle
skinparam monochrome true

class "Pioche survie" as Psurvie
class "Pioche traque" as Ptraque
class Reserve
class "Carte Lieux" as Lieux
class "Carte Survie" as Survie
class "Carte Traque" as Traque
class "Carte Antre" as Antre {
    operation()
}
class "Traqués" as JoueurT
class "Créature" as JoueurC
class "Défausse carte Traque" as DefTraque
class "Défausse carte Survie" as DefSurvie

Reserve <-- Lieux : \t\t
Ptraque <-- Traque : \t\t
Psurvie <-- Survie : \t\t
Lieux <|-- Antre : \t\t
JoueurT <-- "Main [0-10]" Lieux : \t\t
JoueurT <-- "Défausse [0-10]" Lieux : \t\t
JoueurT <-- "Main [0-10]" Survie : \t\t
97
DefSurvie <-- "Défausse [0-n]" Survie : \t\t
98
99
100
101
102
103
104
105
106
107

JoueurC <-- "Main [0-3]" Traque : \t\t
DefTraque <-- "Défausse" Traque : \t\t

....

=== Les jetons de la créature

Il y a 3 jetons : le jeton Créature, le jeton cible et le jeton Arthemia. Pendant
la phase 2, la créature va poser chacun d'entre eux si elle le peut grâce
108
aux cartes traques posées ou à la position du pion secours sur le plateau.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

[plantuml, jeton, png]
....
hide circle
skinparam monochrome true

class Jeton
class "Jeton cible" as Cible
class "Jeton créature" as Creature
class "Jeton Arthémia" as Arthemia

Jeton <|-- Cible : \t\t
Jeton <|-- Creature : \t\t
Jeton <|-- Arthemia : \t\t
....


== Actions

128
129
=== Lâcher prise
_**Précondition**_ : si le joueur possède 0 pion de volonté alors action faite automatiquement, ou le joueur le demande directement en phase 1.
130

131
_**Postcondition**_ : La défausse du joueur est vidée, le joueur récupère tous ses pions volontés et le pion assimilation avance d'une case.
132

133
134
Avant L'action "lâcher prise" :
[plantuml, lacherPrise-av, png]
Gerson Sunyé's avatar
Gerson Sunyé committed
135
....
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
hide circle
skinparam monochrome true

class Plateau {
    PlacementPionSecours = //s//
    PlacementPionAssimilation = //a//
}
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 0
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}

Traque -- "Défausse" Rover : \t\t
Traque -- "Défausse" Riviere : \t\t
Traque -- "Défausse" Jungle : \t\t
Traque -- "Défausse" Abris : \t\t

Gerson Sunyé's avatar
Gerson Sunyé committed
165
166
....

167
Après l'action "lâcher prise" :
Gerson Sunyé's avatar
Gerson Sunyé committed
168

169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
[plantuml, lacherPrise-ap, png]
....
hide circle
skinparam monochrome true

class Plateau {
    PlacementPionSecours = //s//
    PlacementPionAssimilation = //a// + 1
}
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 3
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}

Traque -- "main" Rover : \t\t
Traque -- "main" Riviere : \t\t
Traque -- "main" Jungle : \t\t
Traque -- "main" Abris : \t\t

....

=== Résister (avec 2+ pions de volonté)
_**préconditions**_ : le joueur à 2 pions volonté ou plus et des cartes lieux dans sa défausse

_**postcondition**_ : le joueur récupère 2 cartes par pions de volonté perdus, soit 1 soit deux pions sont perdus selon le choix du joueur.

Avant de résister :
[plantuml, resister2pv-av, png]
....
hide circle
skinparam monochrome true

class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 3
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}

Traque -- "Défausse" Rover : \t\t
Traque -- "Défausse" Riviere : \t\t
Traque -- "Défausse" Jungle : \t\t
Traque -- "Défausse" Abris : \t\t
....

Résister avec un pion de volonté consommé. L'action avec deux pions consommés est similaire que celui-ci, sauf que le nombre de cartes faisant partie de la main et aux pions de volonté qui tombent à 1 plutôt qu'à 2.

Après avoir résisté pour 1 pion de volonté :
[plantuml, resister2pv-ap, png]
....
hide circle
skinparam monochrome true

class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 2
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}

Traque -- "main" Rover : \t\t
Traque -- "main" Riviere : \t\t
Traque -- "Défausse" Jungle : \t\t
Traque -- "Défausse" Abris : \t\t
265
266
....

267
268
=== Résister (avec 1 pion de volonté)

269
270

_**Précondition**_ : être en phase 1 et n'avoir qu'un seul pion de volonté
Alexandre DESMONTILS's avatar
Alexandre DESMONTILS committed
271

272
273
274
275
_**Postcondition**_ : récupérer 2 cartes de la défausse, perdre le dernier point de volonté et effectuer l'action lâcher prise.

Etat du Traqué avant le résister :
[plantuml, resister1pv-av, png]
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
....
hide circle
skinparam monochrome true

class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 1
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}
class Antre {
    operation()
}

300
301
302
303
Traque -- "Defausse" Rover : \t\t
Traque -- "Défausse" Riviere : \t\t
Traque -- "Défausse" Jungle : \t\t
Traque -- "Défausse" Abris : \t\t
304
Traque -- "Défausse" Antre : \t\t
305
306
....

307
308
Etat du Traqué après Résister 1 pion de volonté
[plantuml, resister1pv-ap, png]
309
310
311
312
313
314
....
hide circle
skinparam monochrome true

class "Traqué" as Traque {
    nom = Trinity
315
    PointsDeVolonte = 3
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}
class Antre {
    operation()
}

333
334
335
336
337
Traque -- "Main" Rover : \t\t
Traque -- "Main" Riviere : \t\t
Traque -- "Main" Jungle : \t\t
Traque -- "Main" Abris : \t\t
Traque -- "Main" Antre : \t\t
338
339
....

Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
340
=== Phase 1
341

Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
342
343
344
345
346
347
348
_**préconditions**_ : (Phase 4 terminée ET assimilation>0 ET secours>0) OU Tableau initialisé juste avant

_**postcondition**_ Une carte Lieu a été joué si riviereActuel = 0 et artifactActuel = 0 et 2 cartes Lieu sinon.

Avant la phase 1 pour un cas basique:

[plantuml, Phase1CasBasique-av, png]
349
350
351
....
hide circle
skinparam monochrome true
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 3
}
class Antre {
    operation()
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Plage {
    operation()
}
class Rover {
    operation()
}
class Actuel {
    riviereActuel = 0
    artifactActuel = 0
}
class Plateau {
    PlacementPionSecours = 2
    PlacementPionassimilation = 1
}
379

Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
380
381
382
383
384
385
386
387
388
389
390
391
392
Traque -- "main" Antre : \t\t
Traque -- "main" Jungle : \t\t
Traque -- "main" Riviere : \t\t
Traque -- "main" Plage : \t\t
Traque -- "main" Rover : \t\t
....

Après la phase 1 pour un cas basique:

[plantuml, Phase1CasBasique-ap, png]
....
hide circle
skinparam monochrome true
393
394
395
396
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 3
}
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
397
398
399
class Antre {
    operation()
}
400
401
402
403
404
405
class Jungle {
    operation()
}
class Riviere {
    operation()
}
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
406
407
408
class Plage {
    operation()
}
409
410
411
class Rover {
    operation()
}
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
class Actuel {
    riviereActuel = 0
    artifactActuel = 0
}
class Plateau {
    PlacementPionSecours = 2
    PlacementPionassimilation = 1
}

Traque -- "Joué" Antre : \t\t
Traque -- "main" Jungle : \t\t
Traque -- "main" Riviere : \t\t
Traque -- "main" Plage : \t\t
Traque -- "main" Rover : \t\t
....

Avant la première phase pour un cas complexe:

[plantuml, Phase1-av, png]
....
hide circle
skinparam monochrome true
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 1
}
class Antre {
    operation()
}
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Plage {
    operation()
}
class Rover {
451
452
    operation()
}
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
class Actuel {
    riviereActuel = 1
    artifactActuel = 0
}
class Plateau {
    PlacementPionSecours = 2
    PlacementPionassimilation = 2
}

Traque -- "Défausse" Antre : \t\t
Traque -- "Défausse" Jungle : \t\t
Traque -- "Défausse" Riviere : \t\t
Traque -- "Défausse" Plage : \t\t
Traque -- "main" Rover : \t\t
....

Si riviereActuel = 0 et artifactActuel = 0, on ne peut jouer qu'une carte. Sinon, on en joue deux.
Un joueur peut n'importe quand perdre un ou deux points de volonté pour récupérer 2 ou 4 cartes de la défausse sauf s'il lui reste 1 point de volonté pour prendre 4 cartes et 0 pour utiliser résister.
Lacher prise est obligatoire quand volonté est égale à 0.

Après la première phase pour un cas complexe:

[plantuml, Phase1-ap, png]
....
hide circle
skinparam monochrome true
class "Traqué" as Traque {
    nom = Trinity
    PointsDeVolonte = 3
}
483
484
485
class Antre {
    operation()
}
Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
class Jungle {
    operation()
}
class Riviere {
    operation()
}
class Plage {
    operation()
}
class Rover {
    operation()
}
class Actuel {
    riviereActuel = 1
    artifactActuel = 0
}
class Plateau {
    PlacementPionSecours = 2
    PlacementPionassimilation = 1
}
506

Joseph NISON--GUYON's avatar
Joseph NISON--GUYON committed
507
508
509
510
511
512
Traque -- "Joué" Antre : \t\t
Traque -- "main" Jungle : \t\t
Traque -- "main" Riviere : \t\t
Traque -- "main" Plage : \t\t
Traque -- "Joué" Rover : \t\t
....
513

Samuel PENAULT's avatar
Samuel PENAULT committed
514
515
516
517
=== Phase 3: résolution
_**préconditions**_ :
1) on sait quels joueurs ont joués rivière et artéfact au tour précedent
//*on connait le nombre de carte joué et jouables de la créature
518

Samuel PENAULT's avatar
Samuel PENAULT committed
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
2) la phase 2 vient de finir

_**postcondition**_ : plus aucune carte lieu n'est face caché

La phase 4 commence


début de phase 3:
[plantuml, phase3j1, png]
....
hide circle
skinparam monochrome true

class "Traqué" as Traque {
    nom = Trinity
    pointsDeVolonté = 3
}
class Antre {
    operation()
}
class Riviere {
    operation()
}
class Rover {
    operation()
}
class Abris {
    operation()
}
class Plage {
    operation()
}
class "defausseDeCarteSurvie" as defS {
}
class Adrénaline{
    Adrénaline()
}
Traque -- "Main" Antre : \t\t
557
Traque -- "Main" Riviere : \t\t
Samuel PENAULT's avatar
Samuel PENAULT committed
558
559
560
561
562
Traque -- "Main" Adrénaline : \t\t
Traque -- "Face caché" Plage : \t\t
Traque -- "Défausse" Rover : \t\t
Traque -- "Défausse" Abris : \t\t
....
Alexandre DESMONTILS's avatar
Alexandre DESMONTILS committed
563
564


Samuel PENAULT's avatar
Samuel PENAULT committed
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
[plantuml, phase3j0, png]
....
hide circle
skinparam monochrome true

class "Créature" as Crea {
    nom = Carl
    carteJouableRestante = 2
}
class Anticipation {
    operation()
}
class Clone {
    operation()
}
class Détour {
    operation()
}
class "defausseDeCarteTraque" as defT{

}
class Repérage {
    operation()
}
Crea -- "Main" Anticipation : \t\t
Crea -- "Main" Clone : \t\t
Crea -- "Main" Détour : \t\t

....


[plantuml, phase3.2j0, png]
597
....
Samuel PENAULT's avatar
Samuel PENAULT committed
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
hide circle
skinparam monochrome true

class "Créature" as Crea {
    nom = Carl
    carteJouableRestante = 0
}
class Anticipation {
    operation()
}
class Clone {
    operation()
}
class Détour {
    operation()
}
class "defausseDeCarteTraque" as defT{
615

Samuel PENAULT's avatar
Samuel PENAULT committed
616
617
618
619
620
621
622
}
class Repérage {
    operation()
}
defT -- "Contient" Anticipation : \t\t
defT -- "Contient" Clone : \t\t
Crea -- "Main" Détour : \t\t
623

Samuel PENAULT's avatar
Samuel PENAULT committed
624
625
defT -- "contient" Repérage : \t\t
....
626
////
Gerson Sunyé's avatar
Gerson Sunyé committed
627
[plantuml, class-diagram-example, png]
Gerson Sunyé's avatar
Gerson Sunyé committed
628
629
630
631
632
633
634
635
636
637
....
hide circle
skinparam monochrome true

class Joueur

class Partie

Partie -> "creature [1]" Joueur : \t\t

638
Partie -> "traqués [1-6]" Joueur : \t\t
Gerson Sunyé's avatar
Gerson Sunyé committed
639
....
640
641
////
//include::./use-cases/use-cases.adoc[]