-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAttentePourJouer.java
More file actions
109 lines (98 loc) · 3.51 KB
/
AttentePourJouer.java
File metadata and controls
109 lines (98 loc) · 3.51 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.rmi.*;
import javax.swing.*;
/*
* Classe Job qui implémente Runnable et qui permet de jouer à distance via un serveur RMI
*
* @author BOULLIER Arthur
* @author GONIN-SAGET Allan
*
*/
public class AttentePourJouer implements Runnable{
private Grille g;
private Joueur j;
private AffichageJeu f;
private boolean stop = false;
private boolean dejaLance = false;
/*
* Constructeur de la classe Job
* @param grille: la grille de jeu
* @param jeSuisJoueur: le joueur qui est en attente
* @return void
*/
public AttentePourJouer(Grille grille,Joueur jeSuisJoueur,AffichageJeu affichage){
this.g = grille;
this.j = jeSuisJoueur;
this.f = affichage;
}
/*
* run() est la méthode qui doit etre implémentée pour que la classe puisse être utilisée comme un Thread
* @return void
*/
public void run(){
if(dejaLance)return;
dejaLance = true;
go(this.g, this.j);
}
public void stop() {
stop = true;
}
/*
* go() est la méthode qui sera éxécutée à chaque fois que le joueur sera en attente de l'autre joueur à distance
* @param grille: la grille de jeu
* @param jeSuisJoueur: le joueur qui est en attente
* @return void
*/
public void go(Grille grille, Joueur jeSuisJoueur){
try{
InterfacePartie ServeurPartie = (InterfacePartie) Naming.lookup(InterfaceAdresse.adresseConnexionPartie);
while(true){
for(Case c:grille.listeDeCases) c.setEnabled(false);
Integer temp;
while((temp = ServeurPartie.monTour(jeSuisJoueur.getIcone())).equals(-1)){
Thread.sleep(1000);
System.out.println("Pas de réponse -- "+ temp);
}
System.out.println("Réponse: "+ temp);
//Si l'adversaire a gagner
if(temp >= 10) {
grille.getCase(temp-10).changeCarac(ServeurPartie.iconeGagnant());
JOptionPane.showMessageDialog(null, "Vous avez perdu !");
System.exit(0);
//Sinon c'est le tour du joueur
}else{
if(!temp.equals(9)){
grille.getCase(temp).changeCarac(ServeurPartie.getAdvIcone(jeSuisJoueur.getIcone()));
}
for(Case c:grille.listeDeCases){
if(c.etat == null){
c.setEnabled(true);
}
}
}
//Compteur de temps de jeu -> 10sec
Integer cpt = 0;
while(!cpt.equals(10)){
//Le joueur à joué
if(stop){
System.out.println("Je joue");
this.f.resetProgressBar();
break;
}
Thread.sleep(1000);
this.f.avanceProgressBar();
cpt++;
}
if(!stop){
ServeurPartie.jouer(9,jeSuisJoueur.getIcone());
System.out.println("Trop tard");
}
stop = false;
cpt = 0;
this.f.resetProgressBar();
}
}
catch(Exception e){
System.out.println("Impossible de se connecter");
}
}
}