Bonjour, j'ai un exercice dont l’énoncé est le suivant:
Développer un programme de jeux automatique qui consiste à effectuer pour chaque joueur, 10 itérations ayant chacune un temps aléatoire.
La finalité de ce jeux est d'établir un classement des joueurs par ordre croissant du temps total.
Les directives pour créer ce jeu sont :
minimum 4 joueurs ayant comme identifiant un prénom (choisir des prénoms différents)
le temps aléatoire pour chaque itération est compris entre 0 et 5000 mSec
le temps aléatoire est créé via la méthode Math.random() (voir javadoc)
pour chaque joueur et après chaque itération, afficher le nom du joueur et le temps de l'itération
le lancement du comptage pour chaque joueur est effectué lors du démarrage du programme
Dans un premier temps :
afficher le nom du joueur et son temps total après ses 10 itérations
Dans un deuxième temps :
utiliser un thread deamon qui gère l'affichage du classement
ce thread peut gérer un nombre indéterminé de joueurs
lorsque tous les joueurs ont terminé leurs itérations, le classement par ordre croissant de temps est affiché
l'affichage contient le nom du joueur et son temps total
Class Starter
Class Joueur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package be.iepscfjemelle.poolabo.controller; import be.iepscfjemelle.poolabo.model.Joueur; import java.util.HashMap; /** * * */ public class Starter { /** * @param args the command line arguments */ public static void main(String[] args) { int nbJoueur; HashMap<String, Double> mapClassement = new HashMap<>(); System.out.println("Veuiller entrer le nombre de joueurs: "); nbJoueur = Clavier.lireInt(); for (int i = 1; i <= nbJoueur; i++) { System.out.println("Entre le prénom du joueur " + i); //Joueur ji = new Joueur(Clavier.lireString()); mapClassement.put(Clavier.lireString(), 0.0); Joueur ji = new Joueur(Clavier.lireString()); ji.start(); } } }
Pour le moment, j'en suis au premier temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 package be.iepscfjemelle.poolabo.model; /** * * */ public class Joueur implements Runnable{ private String prenom; public Joueur() { } public Joueur(String prenom) { this.prenom = prenom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } @Override public void run() { Double lower = 0.d; Double higher = 5.0d; Double tempsAleatoire; Double tempsTotal = 0.d; for (int i = 0; i < 10; i++) { tempsAleatoire = (Math.random() * (higher - lower)) + lower; System.out.println(getPrenom() + " : " + "Temps aleatoire = " + tempsAleatoire); tempsTotal = tempsTotal + tempsAleatoire; if (i==10){ System.out.println(getPrenom() + " : " + "Temps total = " + tempsTotal); } } } public void start() { Thread t = new Thread(this); t.start(); } }
Quel collection utiliser pour y mettre [prénom joueur][temps aléatoire] et surtout pouvoir récupérer le résultat d'après le nom ou index?
De plus est-ce une bonne pratique d'utiliser ma classe Joueur comme Thread (ici Runnable)?, j"ai ma réponse, une classe joueur, un thread compteur, un thread deamon pour calculer le temps total par joueur.
En fait, je ne maitrise pas trop les collections et j'ai du mal à trouver une bonne structure à mon programme (diagramme de classe)
Partager