-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPartieRemote.java
More file actions
139 lines (121 loc) · 4.36 KB
/
PartieRemote.java
File metadata and controls
139 lines (121 loc) · 4.36 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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import java.rmi.RemoteException;
import java.rmi.server.*;
/* Classe PartieRemote
* Implémente l'interface InterfacePartie
* Gère la partie
* @author BOULLIER Arthur
* @author GONIN-SAGET Allan
*/
public class PartieRemote extends UnicastRemoteObject implements InterfacePartie{
public Character joueur1;
public Character joueur2;
public Integer tour;
public Grille laGrille;
public Integer dernierCoup;
private Character dernierGagnant;
private ChatRemote petitChat;
/* Constructeur de la classe PartieRemote
* Initialise les variables de la classe
*/
PartieRemote(ChatRemote petitChat) throws RemoteException{
this.resetPartie();
this.dernierGagnant = null;
this.petitChat = petitChat;
}
public static void main(String[] args){
//new PartieRemote();
}
/* Connexion d'un joueur à la partie puis envoi d'un message au chat pour indiquer que le joueur est connecté
* Si le joueur est le premier à se connecter, il est joueur 1, sinon il est joueur 2
* @return le numero du joueur (1 ou 2)
* @return -1 si la partie est déjà en cours
* @param j le joueur qui se connecte
*/
@Override
public retourConnexion connexion(Character j) throws RemoteException {
System.out.println("[SERVEUR] - Un joueur se connecte");
if(this.joueur1 == null){
this.joueur1 = j;
this.petitChat.envoyerMessage("Joueur 1 vient de se connecter", j);
return retourConnexion.JOUEUR1;
}
else if(this.joueur2 == null){
//cas ou les deux caracteres sont les memes
if(this.joueur1.equals(j)) return retourConnexion.CARACTERE_IDENTIQUE;
this.joueur2 = j;
this.petitChat.envoyerMessage("Joueur 2 vient de se connecter", j);
this.resetPartie();
this.petitChat.envoyerMessage("---", '*');
this.petitChat.envoyerMessage("La partie commence", '*');
return retourConnexion.JOUEUR2;
}
return retourConnexion.PARTIE_DEJA_COMMENCEE;
}
/* Jouer un coup
* @return 1 si le joueur a gagné
* @return 0 sinon
* @param i le numero de la case jouée
*/
@Override
public Integer jouer(Integer i, Character j) throws RemoteException {
System.out.println("[SERVEUR] - "+ j +" joue "+i);
this.tour++;
this.dernierCoup = i;
if(i.equals(9))return 0;
this.laGrille.getCase(i).changeCarac(j);
if(this.laGrille.verificationVictoire()){
this.dernierGagnant = j;
this.supprimerJoueurs();
petitChat.envoyerMessage("Le joueur " + j + " gagne la partie", '*');
return 1;
}
return 0;
}
/* Récupérer la grille de la partie
* @param j le joueur qui demande la grille
* @return la grille de la partie
*/
@Override
public Integer monTour(Character j) throws RemoteException {
if(this.laGrille.verificationVictoire()){
System.out.println("[SERVEUR] - La partie est terminée");
this.resetPartie();
return (10+this.dernierCoup);
}
if((tour % 2)==1 && this.joueur1.equals(j)) return this.dernierCoup;
if((tour % 2)==0 && this.joueur2 != null && this.joueur2.equals(j)) return this.dernierCoup;
return -1;
}
/* Récupérer l'icone adverse
* @param j le joueur qui demande l'icone adverse
* @return l'icone adverse
*/
@Override
public Character getAdvIcone(Character j) throws RemoteException{
if(j.equals(this.joueur1))return this.joueur2;
else return this.joueur1;
}
/* Remise à 0 de la partie
* @return void
*/
public void resetPartie(){
this.laGrille = new Grille();
this.tour = 0;
System.out.println("[SERVEUR] - Remise à 0 de la grille");
}
/* Suppression des joueurs de la partie
* @return void
*/
private void supprimerJoueurs(){
this.joueur1 = null;
this.joueur2 = null;
System.out.println("[SERVEUR] - suppresion du lien des joueurs");
}
/* Récupérer l'icone du dernier gagnant
* @return l'icone du dernier gagnant
*/
@Override
public Character iconeGagnant() throws RemoteException {
return this.dernierGagnant;
}
}