Mobile-AREA  1.1
BTS SNIR LaSalle Avignon 2021
Partie.java
Aller à la documentation de ce fichier.
1 package com.example.area;
2 
3 import android.util.Log;
4 
5 import java.io.Serializable;
6 import java.util.Iterator;
7 import java.util.Vector;
8 
22 public class Partie implements Serializable
23 {
27  private static final String TAG = "_Partie";//<! TAG pour les logs
28  public static final int POSITION_PREMIER_JOUEUR = 0;//<! Position du premier joueur dans les Vectors joueursA et joueurB
29  public static final int POSITION_DEUXIEME_JOUEUR = 1;//<! Position du deuxième joueur dans les Vectors joueursA et joueurB
30  private static final int NB_TEMPS_MORTS_MAX = 1;
31 
35  private int nbManchesGagnantes;//<! Le nombre de manches à gagner pour remporter la partie
36  private int nbPointsParManche;//<! Le nombre de points à gagner pour remporter une manche
37  private boolean estFinie;//<! Permet de savoir si la partie est terminée ou non
38  private Vector<Joueur> joueursA;//<! Le ou les joueurs de l'equipe A
39  private Vector<Joueur> joueursB;//<! Le ou les joueurs de l'equipe B
40  private int pointsJoueursA;//<! Les points du ou des joueurs de l'equipe A
41  private int pointsJoueursB;//<! Les points du ou des joueurs de l'equipe B
42  private int manchesJoueursA;//<! Les manches gagnées du ou des joueurs de l'equipe A
43  private int manchesJoueursB;//<! Les manches gagnées du ou des joueurs de l'equipe B
44  private int id;//<! Identifiant de la partie
45  private int nbPointsMaxMancheActuelle;//<! Attribut permettant de gérer les deux points d'écarts dans une manche
46  private Vector<Vector<Integer>> manches = null;//<! Les manches déjà joueés
47  private int tempsMortsJoueursA;//<! Le nombre de temps morts restants pour le joueur A
48  private int tempsMortsJoueursB;//<! Le nombre de temps morts restants pour le joueur B
49 
58  public Partie(int nbManchesGagnantes, int nbPointsParManche, Vector<Joueur> joueursA, Vector<Joueur> joueursB, int id)
59  {
60  this.nbManchesGagnantes = nbManchesGagnantes;
61  this.nbPointsParManche = nbPointsParManche;
62  this.nbPointsMaxMancheActuelle = nbPointsParManche;
63  this.estFinie = false;
64  this.pointsJoueursA = 0;
65  this.pointsJoueursB = 0;
66  this.manchesJoueursA = 0;
67  this.manchesJoueursB = 0;
68  this.id = id;
69  this.joueursA = joueursA;
70  this.joueursB = joueursB;
71  this.manches = new Vector<Vector<Integer>>();
72  this.tempsMortsJoueursA = NB_TEMPS_MORTS_MAX;
73  this.tempsMortsJoueursB = NB_TEMPS_MORTS_MAX;
74  }
75 
79  public Vector<Joueur> getJoueursA()
80  {
81  return joueursA;
82  }
83 
87  public Vector<Joueur> getJoueursB()
88  {
89  return joueursB;
90  }
91 
95  public int getPointsJoueursA()
96  {
97  return pointsJoueursA;
98  }
99 
103  public int getPointsJoueursB()
104  {
105  return pointsJoueursB;
106  }
107 
111  public int getManchesJoueursA()
112  {
113  return manchesJoueursA;
114  }
115 
119  public int getManchesJoueursB()
120  {
121  return manchesJoueursB;
122  }
123 
127  public int getId()
128  {
129  return id;
130  }
131 
135  public boolean estFinie()
136  {
137  return estFinie;
138  }
139 
141  {
143  }
144 
145  public Vector<Vector<Integer>> getManches()
146  {
147  return manches;
148  }
149 
153  public void ajouterPointJoueursA()
154  {
155  pointsJoueursA++;
157  gererService();
158 
159  if (pointsJoueursA == nbPointsMaxMancheActuelle)
160  {
161  manchesJoueursA++;
162  Vector<Integer> mancheActuelle = new Vector<Integer>();
163  mancheActuelle.add(new Integer(pointsJoueursA));
164  mancheActuelle.add(new Integer(pointsJoueursB));
165  manches.add(mancheActuelle);
166  pointsJoueursA = 0;
167  pointsJoueursB = 0;
168  nbPointsMaxMancheActuelle = nbPointsParManche;
170  }
171  }
172 
176  public void ajouterPointJoueursB()
177  {
178  pointsJoueursB++;
180  gererService();
181 
182  if (pointsJoueursB == nbPointsMaxMancheActuelle)
183  {
184  manchesJoueursB++;
185  Vector<Integer> mancheActuelle = new Vector<Integer>();
186  mancheActuelle.add(new Integer(pointsJoueursA));
187  mancheActuelle.add(new Integer(pointsJoueursB));
188  manches.add(mancheActuelle);
189  pointsJoueursA = 0;
190  pointsJoueursB = 0;
191  nbPointsMaxMancheActuelle = nbPointsParManche;
193  }
194  }
195 
199  public void retirerPointJoueursA()
200  {
201  if(pointsJoueursA != 0)
202  {
203  gererService();
205  pointsJoueursA--;
206  }
207  }
208 
212  public void retirerPointJoueursB()
213  {
214  if(pointsJoueursB != 0)
215  {
216  gererService();
218  pointsJoueursB--;
219  }
220  }
221 
225  private void verifierPartieFinie()
226  {
227  if (manchesJoueursB == nbManchesGagnantes || manchesJoueursA == nbManchesGagnantes)
228  {
229  estFinie = true;
230  Log.d(TAG,"Partie finie !");
231  }
232  }
233 
237  private void gererPointsEcart()
238  {
239  if (pointsJoueursA == pointsJoueursB && (pointsJoueursA == (nbPointsMaxMancheActuelle-1 )))
240  {
241  nbPointsMaxMancheActuelle++;
242  }
243  else if ( nbPointsMaxMancheActuelle > nbPointsParManche && pointsJoueursA == pointsJoueursB && (pointsJoueursA == (nbPointsMaxMancheActuelle-2 )))
244  {
245  nbPointsMaxMancheActuelle--;
246  }
247  Log.d(TAG,"nbPointsMaxMancheActuelle : " + Integer.toString(nbPointsMaxMancheActuelle));
248  }
249 
253  private void gererService()
254  {
255  int pointsMarques = pointsJoueursA + pointsJoueursB;
256  if(pointsMarques % 2 == 0 && pointsMarques != 0)
257  {
258  if(joueursA.size() == 1)
259  {
261  }
262  else
263  {
265  }
266  }
267  else if (joueursA.size() == 2)
268  {
269  Joueur serveur = null;
270  serveur = trouverServeur(joueursA);
271  if (serveur != null)
272  {
273  joueursA = permuterServeurRelanceurDuo(joueursA,serveur);
274  }
275  else
276  {
277  serveur = trouverServeur(joueursB);
278  joueursB = permuterServeurRelanceurDuo(joueursB,serveur);
279  }
280  }
281  }
282 
286  private void changerServeurDouble()
287  {
288  Joueur serveur = null;
289  serveur = trouverServeur(joueursA);
290  int indexServeur = 0;
291  if (serveur != null)
292  {
293  indexServeur = joueursA.indexOf(serveur);
294  joueursB.elementAt(indexServeur).setEstServeur(true);
295  joueursA.elementAt(indexServeur).setEstServeur(false);
296  }
297  else
298  {
299  serveur = trouverServeur(joueursB);
300  indexServeur = joueursB.indexOf(serveur);
301  joueursA.elementAt(indexServeur).setEstServeur(true);
302  joueursB.elementAt(indexServeur).setEstServeur(false);
303  }
304  }
305 
309  private void changerServeurSimple()
310  {
311  if (joueursA.elementAt(POSITION_PREMIER_JOUEUR).estServeur())
312  {
313  joueursA.elementAt(POSITION_PREMIER_JOUEUR).setEstServeur(false);
314  joueursB.elementAt(POSITION_PREMIER_JOUEUR).setEstServeur(true);
315  }
316  else
317  {
318  joueursB.elementAt(POSITION_PREMIER_JOUEUR).setEstServeur(false);
319  joueursA.elementAt(POSITION_PREMIER_JOUEUR).setEstServeur(true);
320  }
321  }
322 
326  private Vector<Joueur> permuterServeurRelanceurDuo(Vector<Joueur> duo, Joueur serveur)
327  {
328  int indexServeur = 0;
329  indexServeur = duo.indexOf(serveur);
330  serveur.setEstServeur(false);
331  if (indexServeur == POSITION_DEUXIEME_JOUEUR)
332  {
333  duo.setElementAt(serveur,POSITION_DEUXIEME_JOUEUR);
334  duo.elementAt(POSITION_PREMIER_JOUEUR).setEstServeur(true);
335  }
336  else
337  {
338  duo.setElementAt(serveur,POSITION_PREMIER_JOUEUR);
339  duo.elementAt(POSITION_DEUXIEME_JOUEUR).setEstServeur(true);
340  }
341 
342  return duo;
343  }
344 
348  private Joueur trouverServeur(Vector<Joueur> joueurs)
349  {
350  Iterator<Joueur> itJoueurs = joueurs.iterator();
351  Joueur serveur;
352 
353  while(itJoueurs.hasNext())
354  {
355  serveur = itJoueurs.next();
356  if (serveur.estServeur())
357  {
358  return serveur;
359  }
360  }
361  return null;
362  }
363 
368  {
369  Joueur serveur = trouverServeur(joueursA);
370 
371  if(serveur == null)
372  {
373  serveur = trouverServeur(joueursB);
374  }
375 
376  Log.d(TAG,"Serveur : " + serveur.getNom() + " " + serveur.getPrenom() );
377 
378  return serveur;
379  }
380 
384  public int getNbJoueurs()
385  {
386  return (joueursA.size() + joueursB.size());
387  }
388 
392  public void setJoueursA(Vector<Joueur> joueursA)
393  {
394  this.joueursA = joueursA;
395  }
396 
400  public void setJoueursB(Vector<Joueur> joueursB)
401  {
402  this.joueursB = joueursB;
403  }
404 
408  public Vector<Joueur> getVainqueur()
409  {
410  if (estFinie)
411  {
412  if (manchesJoueursA > manchesJoueursB)
413  return joueursA;
414  else
415  return joueursB;
416  }
417  else
418  {
419  return null;
420  }
421  }
422 
427  {
428  return tempsMortsJoueursA;
429  }
430 
435  {
436  return tempsMortsJoueursB;
437  }
438 
442  public void setTempsMortsJoueursA(int tempsMortsJoueursA)
443  {
444  this.tempsMortsJoueursA = tempsMortsJoueursA;
445  }
446 
450  public void setTempsMortsJoueursB(int tempsMortsJoueursB)
451  {
452  this.tempsMortsJoueursB = tempsMortsJoueursB;
453  }
454 
455  public void setEstFinie(boolean estFinie)
456  {
457  this.estFinie = estFinie;
458  }
459 
460  public void setManches(Vector<Vector<Integer>> manches)
461  {
462  this.manches = manches;
463 
464  Vector<Integer> manche = null;
465 
466  for (int i = 0; i < manches.size(); i++)
467  {
468  manche = this.manches.elementAt(i);
469  if ((manche != null) && (manche.elementAt(0) > manche.elementAt(1)))
470  manchesJoueursA++;
471  else
472  manchesJoueursB++;
473  }
474  }
475 }
void setTempsMortsJoueursA(int tempsMortsJoueursA)
Mutateur de l&#39;attribut tempsMortsJoueursA.
Definition: Partie.java:442
Joueur trouverServeur(Vector< Joueur > joueurs)
Trouve le serveur dans un vecteur de joueurs puis retourne ce joueur ou null si il n&#39;y en a aucun...
Definition: Partie.java:348
int getNbPointsMaxMancheActuelle()
Definition: Partie.java:140
Vector< Vector< Integer > > manches
Definition: Partie.java:46
int getManchesJoueursB()
Accesseur de l&#39;attribut manchesJoueursB.
Definition: Partie.java:119
Vector< Joueur > getJoueursA()
Accesseur de l&#39;attribut joueursA.
Definition: Partie.java:79
int getId()
Accesseur de l&#39;attribut iD.
Definition: Partie.java:127
void ajouterPointJoueursB()
Méthode permettant d&#39;incrémenter le score des joueursB.
Definition: Partie.java:176
void verifierPartieFinie()
Méthode permettant de vérifier si la partie est finie.
Definition: Partie.java:225
String getNom()
Accesseur de l&#39;attribut nom.
Definition: Joueur.java:45
void retirerPointJoueursA()
Méthode permettant de décrémenter le score des joueursA.
Definition: Partie.java:199
int getNbJoueurs()
Retourne le nombre de joueurs dans la partie.
Definition: Partie.java:384
void setJoueursB(Vector< Joueur > joueursB)
Mutateur de l&#39;attribut joueursB.
Definition: Partie.java:400
Vector< Joueur > getJoueursB()
Accesseur de l&#39;attribut joueursB.
Definition: Partie.java:87
String getPrenom()
Accesseur de l&#39;attribut prenom.
Definition: Joueur.java:53
void setEstFinie(boolean estFinie)
Definition: Partie.java:455
void ajouterPointJoueursA()
Méthode permettant d&#39;incrémenter le score des joueursA.
Definition: Partie.java:153
Vector< Joueur > joueursB
Definition: Partie.java:39
void gererPointsEcart()
Méthode permettant de gérer les points d&#39;écarts lors d&#39;une manche.
Definition: Partie.java:237
Vector< Vector< Integer > > getManches()
Definition: Partie.java:145
int getTempsMortsJoueursA()
Accesseur de l&#39;attribut tempsMortsJoueursA.
Definition: Partie.java:426
Partie(int nbManchesGagnantes, int nbPointsParManche, Vector< Joueur > joueursA, Vector< Joueur > joueursB, int id)
Constructeur de la classe Partie.
Definition: Partie.java:58
Vector< Joueur > getVainqueur()
Trouve le gagnant et le retourne, si il n&#39;y en a pas retourne null.
Definition: Partie.java:408
static final int NB_TEMPS_MORTS_MAX
Definition: Partie.java:30
Vector< Joueur > joueursA
Definition: Partie.java:38
void setEstServeur(boolean estServeur)
Mutateur de l&#39;attribut estServeur.
Definition: Joueur.java:69
int getTempsMortsJoueursB()
Accesseur de l&#39;attribut tempsMortsJoueursB.
Definition: Partie.java:434
Joueur getServeur()
Trouve le serveur et le retourne.
Definition: Partie.java:367
int getPointsJoueursA()
Accesseur de l&#39;attribut pointsJoueursA.
Definition: Partie.java:95
void gererService()
Méthode permettant de gérer l&#39;attribution du service.
Definition: Partie.java:253
static final String TAG
Definition: Partie.java:27
boolean estFinie()
Accesseur de l&#39;attribut estFinie.
Definition: Partie.java:135
static final int POSITION_DEUXIEME_JOUEUR
Definition: Partie.java:29
void setManches(Vector< Vector< Integer >> manches)
Definition: Partie.java:460
Classe regroupant les informations d&#39;un joueur.
Definition: Joueur.java:18
Vector< Joueur > permuterServeurRelanceurDuo(Vector< Joueur > duo, Joueur serveur)
Méthode permettant de changer le serveur au sein d&#39;un duo en double.
Definition: Partie.java:326
void changerServeurSimple()
Méthode permettant de changer le serveur en simple.
Definition: Partie.java:309
void retirerPointJoueursB()
Méthode permettant de décrémenter le score des joueursB.
Definition: Partie.java:212
int getPointsJoueursB()
Accesseur de l&#39;attribut pointsJoueursB.
Definition: Partie.java:103
Classe permettant la gestion d&#39;une partie.
Definition: Partie.java:22
int getManchesJoueursA()
Accesseur de l&#39;attribut manchesJoueursA.
Definition: Partie.java:111
void setJoueursA(Vector< Joueur > joueursA)
Mutateur de l&#39;attribut joueursA.
Definition: Partie.java:392
void setTempsMortsJoueursB(int tempsMortsJoueursB)
Mutateur de l&#39;attribut tempsMortsJoueursB.
Definition: Partie.java:450
static final int POSITION_PREMIER_JOUEUR
Definition: Partie.java:28
void changerServeurDouble()
Méthode permettant de changer le serveur de duo en double.
Definition: Partie.java:286