1 package projet.lasalle84.darts;
3 import android.bluetooth.BluetoothAdapter;
4 import android.bluetooth.BluetoothDevice;
5 import android.os.Bundle;
6 import android.os.Handler;
7 import android.os.Message;
8 import android.util.Log;
10 import java.util.ArrayList;
11 import java.util.Iterator;
14 import static android.os.SystemClock.sleep;
31 private final static String
TAG =
"Partie";
68 public Partie(ArrayList<Joueur> lesJoueurs,
TypeJeu typeJeu,
boolean AfficheRegle, BluetoothAdapter bluetoothAdapter, Handler handlerUI)
75 this.nbJoueurs = this.lesJoueurs.size();
77 this.afficheRegle = AfficheRegle;
91 Log.d(TAG,
"recupererPeripheriques()");
92 devices = bluetoothAdapter.getBondedDevices();
102 Log.d(TAG,
"connecterPeripheriquesBluetooth()");
105 for (BluetoothDevice device : devices)
107 if(device.getName().contains(nomPeripherique))
110 Log.d(TAG,
"Adresse du péripherique raspberrypi " + device.getAddress());
116 for (BluetoothDevice device : devices)
118 if(device.getName().contains(nomPeripherique))
121 Log.d(TAG,
"Adresse du péripherique darts " + device.getAddress());
140 Log.d(TAG,
"deconnecterPeripheriquesBluetooth()");
160 if(peripherique != null)
162 Log.d(TAG,
"envoyerTrame() " + peripherique.
getNom());
173 Log.d(TAG,
"demarrer()");
179 Iterator<Joueur> it = lesJoueurs.iterator();
180 Log.d(TAG,
"Manche numéro " + nbManche);
183 Joueur monJoueur = it.next();
184 Log.d(TAG,
"c'est le tour à " + monJoueur.
getNom());
196 impactEstRecuperer =
false;
198 pointVolley =+ impact[0]*impact[1];
231 Log.d(TAG,
"initialiserPartie()");
232 Iterator<Joueur> it = lesJoueurs.iterator();
233 String nomJoueurTrame =
new String();
236 Joueur monJoueur = it.next();
239 nomJoueurTrame = nomJoueurTrame.concat(monJoueur.
getNom() +
";");
241 int afficheRegleInt = afficheRegle ? 1 : 0;
242 envoyerTrame(ecran,
"$DARTS;START;" + typeJeu.
getTypeJeu() +
";" + afficheRegleInt +
";" + lesJoueurs.size() +
";" + nomJoueurTrame +
"\r\n");
249 public void handleMessage(Message msg)
251 super.handleMessage(msg);
252 Bundle b = msg.getData();
254 switch(b.getInt(
"etat"))
257 Log.d(TAG,
"<Bluetooth> Erreur " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] connecter");
261 Log.d(TAG,
"<Bluetooth> Erreur " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] envoyer");
265 Log.d(TAG,
"<Bluetooth> Erreur " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] envoyer");
269 Log.d(TAG,
"<Bluetooth> Connexion " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] ok");
273 String donnees = b.getString(
"donnees");
274 if(donnees.contains(
"\r\n"))
276 Log.d(TAG,
"<Bluetooth> Données reçues " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] : " + donnees.replace(
"\r\n",
""));
281 Log.d(TAG,
"<Bluetooth> Données reçues " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] : " + donnees);
286 Log.d(TAG,
"<Bluetooth> Déconnexion " + b.getString(
"nom") +
" [" + b.getString(
"adresse") +
"] ok");
289 Log.d(TAG,
"<Bluetooth> code état inconnu ! ");
301 Log.d(TAG,
"attendreImpact()");
302 while (!impactEstRecuperer)
307 envoyerTrame(ecran,
"$DART;GAME;" + impact[0] +
";" + impact[1] +
"\r\n");
312 estDoubleImpact =
true;
316 estDoubleImpact =
false;
319 Log.d(TAG,
"Type cible: " + impact[0] +
"Numero Cible:" + impact[1]);
331 trame = trame.replace(
"\r\n",
"");
332 String[] trameDecoupe = trame.split(
";",4);
333 Bundle bundle =
new Bundle();
335 switch (trameDecoupe[1])
338 Log.d(TAG,
"traitementTrame: GAME");
339 impact[0] = Integer.parseInt(trameDecoupe[2]);
340 impact[1] = Integer.parseInt(trameDecoupe[3]);
341 impactEstRecuperer =
true;
373 Log.d(TAG,
"actualiserScoreIHM()");
374 Message msg = Message.obtain();
375 Bundle b =
new Bundle();
376 b.putInt(
"action",SET_SCORE);
377 b.putString(
"joueur", monJoueur.
getNom());
378 b.putInt(
"score", score);
380 handlerUI.sendMessage(msg);
391 Log.d(TAG,
"actualiserJoueurIHM()");
392 Message msg = Message.obtain();
393 Bundle b =
new Bundle();
394 b.putInt(
"action",JOUEUR_SUIVANT);
395 b.putString(
"joueur", monJoueur);
397 handlerUI.sendMessage(msg);
408 Log.d(TAG,
"impactIHM()");
409 Message msg = Message.obtain();
410 Bundle b =
new Bundle();
411 b.putInt(
"action",IMPACT);
412 b.putInt(
"typePoint",typePoint);
413 b.putInt(
"numeroCible",numeroCible);
415 handlerUI.sendMessage(msg);
425 Log.d(TAG,
"envoyerGagnantIHM()");
428 Message msg = Message.obtain();
429 Bundle b =
new Bundle();
430 b.putInt(
"action",GAGNANT);
431 b.putString(
"gagnant",monJoueur.
getNom());
433 handlerUI.sendMessage(msg);
440 impactEstRecuperer =
true;
445 if (peripherique.equals(NOM_PERIPHERIQUE_BLUETOOTH_CIBLE))
447 Log.d(TAG,
"envoyerConnexionIHM()");
448 Message msg = Message.obtain();
449 Bundle b =
new Bundle();
450 b.putInt(
"action",CONNEXION_CIBLE);
452 handlerUI.sendMessage(msg);
void actualiserJoueurIHM(String monJoueur)
Actualiser le joueur à IHM.
static final int CODE_RECEPTION
Code de Reception.
static final int JOUEUR_SUIVANT
void attendreImpact()
Attendre l'impact.
static final String NOM_PERIPHERIQUE_BLUETOOTH_ECRAN
le nom du périphérique Bluetooth du module écran
void initialiserPartie()
Initialiser la partie.
void connecter()
Méthode pour se connecter sur le perihperique en Bluetooth.
boolean afficheRegle
Booléen si on doit affichier les règles de la partie.
static final int CODE_ERREUR_ENVOYER
Code erreur lors de l'envoi.
boolean retirerPoint(int scoreLancer, Partie maPartie)
fonction qui permet de retirer le score et retourner si le score a était retiré
Déclaration de la classe Peripherique.
static final int CODE_DECONNEXION
Code de Deconnexion.
String getNom()
Accesseur get du nom du joueur.
int nbJoueurs
Nombre de joueur.
String getNom()
Méthode qui retourne le nom du périphérique.
boolean deconnecter()
Méthode pour se deconnecter sur le perihperique en Bluetooth.
Déclaration de la classe Joueur.
Handler handlerUI
Handler pour gérer l'interface.
static final int CODE_ERREUR_RECEVOIR
Code erreur lors de la réception.
void envoyerConnexionIHM(String peripherique)
Peripherique ecran
Peripherique raspberry connecté en Bluetooth.
void deconnecterPeripheriquesBluetooth()
Deconnecter les periphériques bluetooth.
static final int NB_FLECHETTE
Déclaration de la classe Partie.
void envoyerTrame(Peripherique peripherique, String trame)
Envoie une trame à un péripherique.
void connecterPeripheriquesBluetooth()
Se connecter sur un péripherique via son adresse.
Set< BluetoothDevice > devices
Les peripheriques qui sont appairés.
ArrayList< Joueur > lesJoueurs
Les objets Joueur stocker dans un conteneur (Queue)
Déclaration de la classe TypeJeu.
static final String NOM_PERIPHERIQUE_BLUETOOTH_CIBLE
le nom du périphérique Bluetooth du module cible
static final int CONNEXION_CIBLE
static final int CODE_CONNEXION
Code de Connection.
boolean impactEstRecuperer
Booléen pour savoir quand on reçoit une trame impact.
void envoyer(final String data)
Méthode pour envoyer une trame en Bluetooth.
static final int SET_SCORE
void setScore(int score)
Accesseur set du score du joueur.
static final String TAG
Tag pour Log.
void impactIHM(int typePoint, int numeroCible)
Envoyer impact à IHM.
Peripherique cible
Peripherique darts connecté en Bluetooth.
int getScore()
Accesseur get du score du joueur.
TypeJeu typeJeu
Mode de jeu.
boolean estFini
Booléen si la partie est fini.
void traitementTrame(String trame)
traiter la trame reçu par Handler
void demarrer()
Démarrer la partie.
void actualiserScoreIHM(Joueur monJoueur, int score)
Actualiser le score du joueur à IHM.
Partie(ArrayList< Joueur > lesJoueurs, TypeJeu typeJeu, boolean AfficheRegle, BluetoothAdapter bluetoothAdapter, Handler handlerUI)
Constructeur de la classe Partie.
BluetoothAdapter bluetoothAdapter
Bluetooth Adapteur.
void envoyerGagnantIHM(Joueur monJoueur)
Envoyer le gagnant a IHM.
void recupererPeripheriques()
Récupère les péripheriques Bluetooth qui sont appairés.
static final int CODE_ERREUR_CONNECTER
Code erreur lors de la connexion.
int nbManche
Nombre de manche.
boolean estDoubleImpact
Booléen si la derniere impact est du type double.