Document conception pour les tutoriels
#
- Erratum: c’est bien la semaine 8 pour commencer à regarder le
ModelePartie
Vue
#
NOTES
#
- «S’inscrire» ajoute un rendez-vous pour l’usager courant
- «Voir» permet d’observer une partie déjà en cours
- «Jouer» permet de débuter une partie contre un usager en attente
NOTES
#
- «Quitter» revient à la file d’attente
Fonctionnalités
#
Boutons «s’inscrire» et «jouer»
#
- Si l’usager est déjà dans la file d’attente:
- le bouton «s’inscrire» et les boutons «jouer» doivent être cachés
S’inscire dans la file d’attente
#
- Action: l’usager clique sur le bouton «s’inscrire»
- Effet: la
VueFileAttente
affiche un nouveau rendez-vous de type
Ee est en attente «Jouer»
Débuter une partie
#
- Action: un usager qui n’est pas dans la file clique sur un bouton «Jouer»
- Effet: on crée une nouvelle partie et on l’ouvre automatiquement
Observer une partie
#
- Action: un usager qui n’est pas dans la file clique sur un bouton «Voir»
- Effet: on crée une nouvelle
VuePartie
pour observer une partie qui existe déjà
Quitter une partie
#
- Action: dans la
VuePartie
, l’usager clique sur «Quitter»
- Effet: on ferme la
VuePartie
et on revient à la VueFileAttente
Modèles
#
ModeleFileAttente
#
ModelePartie
#
NOTES
#
- On peut aussi spécifier les modèles directement en Java:
public class ModeleFileAttente {
private long prochainIdRendezVous;
private List<RendezVous> rendezVousDansOrdre;
}
public class RendezVous {
private String idRendezVous;
private Joueur premierJoueur;
}
public class RendezVousComplet extends RendezVous {
private Joueur deuxiemeJoueur;
}
public class Joueur {
private String id;
private String prenom;
private String nom;
}
public class ModelePartie {
private Map<Position, InfoJoueur> infoJoueurParPosition;
private Balle2d prochaineBalle;
}
public enum Position {
GAUCHE, DROITE;
}
public class InfoJoueur {
private Joueur joueur;
private boolean siActif;
private int score;
}
- Ou encore avec un diagramme:
- Voire même avec un exemple en Json
{
"_C": "ModeleFileAttente",
"prochainIdRendezVous": 3,
"rendezVousDansOrdre": [
{
"_C": "RendezVousComplet",
"idRendezVous": "1",
"premierJoueur": {
"_C": "Joueur",
"id": "Nb7X",
"prenom": "Alice",
"nom": "Ahmadi"
},
"deuxiemeJoueur": {
"_C": "Joueur",
"id": "8Dco",
"prenom": "Louis",
"nom": "Yi"
}
},
{
"_C": "RendezVous",
"idRendezVous": "2",
"premierJoueur": {
"_C": "Joueur",
"id": "09v2",
"prenom": "Élisabeth",
"nom": "Gonzales"
}
}
]
}
{
"_C": "ModelePartie",
"infoJoueurParPosition": {
"GAUCHE": {
"_C": "InfoJoueur",
"score": 1,
"siActif": true,
"joueur": {
"_C": "Joueur",
"id": "Nb7X",
"prenom": "Alice",
"nom": "Ahmadi"
}
},
"DROITE": {
"_C": "InfoJoueur",
"score": 0,
"siActif": true,
"joueur": {
"_C": "Joueur",
"id": "8Dco",
"prenom": "Louis",
"nom": "Yi"
}
}
},
"prochaineBalle": null
}
- L’important est de préciser le genre de données qu’on va sauvegarder et afficher