Analyse du domaine
Travail à réaliser
- Objectif
-
Description du jeu Catane sous la forme d’un diagramme de classes conceptuelles et d’actions.
- Moyens
-
Utilisez une approche itérative pour découvrir toutes les classes conceptuelles et les actions du jeu.
Cas d’utilisation
Cas d’utilisation "Création lobby"
Item | Description |
---|---|
# |
1 |
Cas d’utilisation |
Création du lobby |
Alias |
LobbyCreation |
Objectif contextuel |
Un joueur hôte créé un lobby depuis le menu afin que les autres joueurs puissent le rejoindre par la suite. |
Portée |
|
Niveau |
Primary task |
Condition de succès |
Le lobby est créé, l’hôte est ajouté à ce lobby et l’id du lobby est présenté à l’hôte |
Condition d’échec |
Échec de la création, code d’erreur |
Acteurs principaux |
Lobby manager, lobby, joueur hôte |
Acteurs secondaires |
|
Événement déclencheur |
Demande de création de lobby par l’hôte |
Priorité |
High |
Fréquence |
une fois par partie |
Pré-conditions |
|
Post-conditions |
|
Scénario nominal |
|
Extensions |
|
Alternatives |
|
Cas d’utilisation supérieur |
LobbyManager |
Cas d’utilisation subordonnés |
GameManagement |
Objectif de performance |
< 500ms temps de requête, < 2sec temps de connexion |
Problèmes ouverts |
|
Échéancier |
1.0 |
Contraintes |
|
Annexes |
Cas d’utilisation "Connexion lobby"
Item | Description |
---|---|
# |
2 |
Cas d’utilisation |
Inscription (et connexion) d’un joueur à un lobby |
Alias |
LobbyConnection |
Objectif contextuel |
Un joueur se connecte à un lobby disponible après s’y être inscrit |
Portée |
|
Niveau |
Primary task |
Condition de succès |
Connexion réussie, websocket initiée |
Condition d’échec |
Échec de la connexion, code d’erreur |
Acteurs principaux |
Lobby manager, lobby, joueur |
Acteurs secondaires |
|
Événement déclencheur |
Requête de connexion du joueur à un lobby |
Priorité |
High |
Fréquence |
nbDeJoueurs/Jour |
Pré-conditions |
|
Post-conditions |
|
Scénario nominal |
|
Extensions |
|
Alternatives |
|
Cas d’utilisation supérieur |
LobbyManager |
Cas d’utilisation subordonnés |
GameManagement |
Objectif de performance |
< 500ms temps de requête, < 2sec temps de connexion |
Problèmes ouverts |
|
Échéancier |
1.0 |
Contraintes |
|
Annexes |
Cas d’utilisation "Préparation partie"
Item | Description |
---|---|
# |
3 |
Cas d’utilisation |
Création des éléments nécessaires au lancement de la partie |
Alias |
Préparation (de la partie) |
Objectif contextuel |
Générer le |
Portée |
La Game |
Niveau |
Primary Task |
Condition de succès |
Ensemble des éléments générés |
Condition d’échec |
Un ou plusieurs éléments non générés |
Acteurs principaux: |
La Game |
Acteurs secondaires |
Les joueurs |
Événement déclencheur |
Lancement de la partie par l’hote |
Priorité |
élevé |
Fréquence |
Une fois par partie |
Pré-conditions |
|
Post-conditions |
|
Scénario nominal |
|
Extensions |
|
Alternatives |
Peut importe l’ordre des événements du moment que les terrains soient générés après le plateau et que l’attribution des colonies, villes et routes se fasse après la création des joueurs |
Cas d’utilisation supérieur |
Mise en place de la Game |
Cas d’utilisation subordonnés |
|
Objectif de performance |
Lancement <5sec |
Problèmes ouverts |
|
Échéancier |
1.0 |
Contraintes |
|
Annexes |
Cas d’utilisation "Mise en place"
Item | Description |
---|---|
# |
4 |
Cas d’utilisation |
Première phase de la partie |
Alias |
Mise en place (de la partie) |
Objectif contextuel |
Les |
Portée |
la Game |
Niveau |
Summary |
Condition de succès |
A la fin de cette phase tous les joueurs ont 2 colonies et 2 routes placés sur le plateau et les ressources correspondantes |
Condition d’échec |
Une des conditions de succès non validée |
Acteurs principaux: |
Les joueurs |
Acteurs secondaires |
Aucun |
Événement déclencheur |
Fin de l’Initialisation |
Priorité |
élevé |
Fréquence |
Une fois par partie |
Pré-conditions |
|
Post-conditions |
|
Scénario nominal |
|
Extensions |
|
Alternatives |
|
Cas d’utilisation supérieur |
LobbyManager |
Cas d’utilisation subordonnés |
LobbyConnection |
Objectif de performance |
Lancement <5sec |
Problèmes ouverts |
|
Échéancier |
1.0 |
Contraintes |
|
Annexes |
Cas d’utilisation "Déroulement tour"
Item | Description |
---|---|
# |
5 |
Cas d’utilisation |
Déroulement d’un tour |
Alias |
Tour de jeu |
Objectif contextuel |
Réalisé dans un ordre précis les différentes |
Portée |
La partie |
Niveau |
Primary Task |
Condition de succès |
Ensemble des éléments générés |
Condition d’échec |
Erreurs |
Acteurs principaux: |
Joueur |
Acteurs secondaires |
Autres joueurs en cas d’échange |
Événement déclencheur |
Fin de la mise en place si c’est le premier tour ou fin du tour précédent |
Priorité |
élevé |
Fréquence |
Autant de fois que nécessaire par partie |
Pré-conditions |
|
Post-conditions |
|
Scénario nominal |
|
Extensions |
|
Alternatives |
|
Cas d’utilisation supérieur |
|
Cas d’utilisation subordonnés |
|
Objectif de performance |
Temps de requête <500 ms pour rendre les interactions fluides entre le jeu et les joueurs |
Problèmes ouverts |
|
Échéancier |
1.0 |
Contraintes |
|
Annexes |
Activités
Les activités ont lieu lors du tour d’un joueur X. |
X poursuit son tour à la fin de chaque activité hors |
lancerDes()
X lance les 2 dés.
On appelera D la somme des valeurs obtenues. |
Si D ≠ 7 alors :
- les joueurs ayant une colonie/ville avoisinant un terrain dont le jeton vaut D recoivent les ressources du terrain (1 ressource par colonie, 2 par ville) (recevoirRessources()
).
Si D = 7 alors :
- personne ne gagne de ressources durant ce tour.
- tous les joueurs possédant plus de 7 cartes Ressource doivent défausser la moitié de leurs cartes (defausserRessources()
), au choix. En cas d’un nombre impair de cartes, on arrondit en faveur du joueur (par exemple, celui qui possède 9 cartes doit en remettre 4 dans la pile).
- X déplace le pion Voleurs (deplacerVoleurs()
).
- X vole au hasard une ressource à un adversaire qui possède une colonie/ville autour du terrain sur lequel se trouve le pion Voleurs (volerRessource()
).
volerRessource(Terrain t)
X vole une ressource aléatoire à un adversaire possédant une colonie/ville adjacente au terrain donné.
echangeJoueur(Joueur Y, ? typeRessource, ? typeRessource)
X propose un échange de ressources avec un autre joueur Y.
Y peut accepter l’échange (accepterEchange()
), le refuser (refuserEchange()
) ou bien faire une contre-proposition en demandant un autre type de ressource (contreProposer()
).
contreProposer(? typeRessource)
Y propose un autre type de ressource. X peut accepter ou refuser cet échange.
echangeBanque(? typeRessource, ? typeRessource)
X effectue un échange avec la banque. Il peut toujours échanger au rapport 4 :1, c’est à dire remettre 4 ressources identiques dans la réserve et prendre une ressource de son choix. Si le joueur dispose d’une colonie avec un port, il peut réaliser un échange plus intéressant. Pour un port de rapport 3 :1, le joueur donne 3 ressources identiques et prend en échange 1 ressource de son choix ; un port spécialisé permet même d’échanger 2 ressources indiquées contre une ressource de son choix.
construireColonie(EmplacementConstruction ec)
X échange les ressources nécessaires pour placer une colonie à un EmplacementConstruction libre.
construireColonieGratuitement(EmplacementConstruction ec)
X place une colonie à un emplacement libre. Cette méthode est appelée lors de la mise en place de la partie.
ameliorerColonieEnVille(Colonie c)
X échange les ressources nécessaires pour placer une ville à la place de la colonie (lui appartenant) donnée en paramêtre.
construireRoute(Emplacement ec)
X échange les ressources nécessaires pour placer une route à un EmplacementRoute libre.
construireRouteGratuitement(EmplacementConstruction ec)
X place une route à un EmplacementRoute libre. Cette méthode est appelée lors de la mise en place de la partie et peut aussi être appelée si le joueur joue une CarteProgres.