Bonjour,
je dois concevoir le jeu Puissance4 en projet, j'arrive à une question où il est demandé d'organiser un jeu où le temps de réponse est limité. c'est à dire que si le temps de jeu du joueur1 est de 5000ms, ça sera au tour du joueur2 de jouer après les 5s que le joueur 1 ait joué ou pas. le jeu en lui-même fonctionne déjà bien mais je n'arrive pas intégrer cette contrainte.
Pour cela, je dois rajouter un attributà laint temps
qui doit correspondre au temps (en millisecondes) de réponse de la méthode Jouer et changer le constructeur de ma classe joueurMICTS comme ceciclasse JoueurMCTS (La classe JoueurMCTS dérivée de la classe Joueur met en oeuvre l’algorithme MCTS pour un nombre d’itérations fixé. L’attribut float a est un paramètre positif qui intervient pour le choix du coup le plus prometteur lors de la phase de sélection.).JoueurMCTS(float a, int temps)
J'ai modifié ma méthode Jouer comme ci-dessous mais cela ne fonctionne pas, à vrai dire, je ne sais pas comment faire, j'ai bidouillé ceci en ayant découvert les thread.
Merci d'avance pour votre aide,
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 public override int Jouer(Position p) { Thread th = Thread.CurrentThread; bool fini = th.Join(temps); racine = new Noeud(null, p); while(fini) { // Sélection Noeud no = racine; do { no.CalculMeilleurFils(a); no = no.MeilleurFils(); } while (no.fils.Length > 0 && no.cross > 0); // Simulation Resultat res = JeuHasard(no.p); int re = p.j1aletrait ? 0 : 1; if (res == Resultat.j1gagne) { re = 1; } if (res == Resultat.j0gagne) { re = 0; } // Rétropropagation while (no != null) { no.cross += 1; no.win += re; no = no.pere; } } racine.CalculMeilleurFils(a); Console.WriteLine(racine); return racine.indiceMeilleurFils; ; }
Cordialement
Partager