Salut, je dois créer une boucle infinie qui sort le nom d'un joueur toutes les 10 secondes. Plus un joueur a de points, plus son nom doit sortir souvent (mais pas plus d'un joueur toutes les 10 secondes). En prenant en compte que la liste de joueurs peut contenir aussi bien 3 joueurs que des milliers de joueurs.
Voila mon code:
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 public class Joueur { String name; int points; public Joueur(String name, int points) { super(); this.name = name; this.points = points; } public String getName() { return name; } public int getPoints() { return points; } }Très bien, ça sort bel et bien le nom d'un joueur toutes les 10 secondes mais ça fait 2 heures que je cherche un moyen pour que ça sorte plus souvent ceux qui ont le plus de points (en l'occurence par exemple ce cador de joueur4 grace a ses 7000pts doit sortir exactement 100 fois plus souvent que joueur2 qui a 70pts). Comment feriez vous?
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 public static void main(String[] args) { Joueur joueur1 = new Joueur("joueur1", 550); Joueur joueur2 = new Joueur("joueur2", 70); Joueur joueur3 = new Joueur("joueur3", 37); Joueur joueur4 = new Joueur("joueur4", 7000); Joueur joueur5 = new Joueur("joueur5", 1200); LinkedList<Joueur> joueursList = new LinkedList<Joueur>(Arrays.asList(joueur1, joueur2, joueur3, joueur4, joueur5)); Thread thread = new Thread() { public void run() { while (true) { for (Joueur joueur : joueursList) { try { Thread.sleep(10000); System.out.println(joueur.getName() + ": " +joueur.getPoints() + "pts"); } catch (InterruptedException e) { e.printStackTrace(); } } } } }; thread.start(); }
Merci d'avance au champion qui saura m'aider
edit: les joueurs ne doivent pas être affiché au hasard selon un pourcentage de chance mais dans l'ordre le plus representatif possible même sur un court echantillon (par exemple ici avec seulement 5 joueurs, au bout d'une vingtaine de sysout chaque joueur doit voir qu'il a été d'avantage affiché qu'un joueur avec significativement moins de points que lui sans que le hasard ne laisse place a quelconque doute). Ou un autre exemple, si un joueur regarde disons 5 affichages il ne doit y avoir aucune chance pour qu'un joueur avec moins de points que lui soit affiché 2 fois alors que lui ne l'a été qu'une seule fois sur ces 5 échantillon. Logiquement on ne devrait donc pas pas se servir de Random()
Le programme doit afficher les joueurs de la manière la plus variée possible et non pas afficher par exemple 50 fois d'affilé le joueur qui a le plus de points puis 20 fois d'affilé le second joueur qui a le plus de points, etc ...
Le but final est qu'un utilisateur ait besoin de lire le moins de lignes possibles dans la console avant de comprendre que + un joueur a de points + le nom de ce joueur est affiché
Partager