31 compteurDureePartie(0),
32 messageStatut(
"Volée ➤")
35 qDebug() << Q_FUNC_INFO;
67 qDebug() << Q_FUNC_INFO;
81 connect(
darts, SIGNAL(finPartie(QString,
int,
bool)),
this, SLOT(
finirPartie(QString,
int,
bool)));
102 connect(
darts, SIGNAL(finTournois(QString,QString,QList<Joueur>)),
this, SLOT(
afficherFinTournois(QString,QString,QList<Joueur>)));
114 QAction *quitter =
new QAction(
this);
115 quitter->setShortcut(QKeySequence(QKeySequence(Qt::Key_Up)));
119 #ifndef QT_NO_DEBUG_OUTPUT 120 QAction *actionAllerDroite =
new QAction(
this);
121 actionAllerDroite->setShortcut(QKeySequence(Qt::Key_Right));
122 addAction(actionAllerDroite);
123 connect(actionAllerDroite, SIGNAL(triggered()),
this, SLOT(
allerPageSuivante()));
124 QAction *actionAllerGauche =
new QAction(
this);
125 actionAllerGauche->setShortcut(QKeySequence(Qt::Key_Left));
126 addAction(actionAllerGauche);
138 QString affichageHeure;
139 QTime heure = QTime::currentTime();
140 affichageHeure =
"<font color=\"#6D2B6B\">" + heure.toString(
"hh : mm ") +
"</font>";
141 ui->labelHeureAttente->setText(affichageHeure);
142 ui->labelHeureStatistique->setText(affichageHeure);
143 ui->labelHeureTournois->setText(heure.toString(
"hh : mm "));
154 int premierJoueurAfficher = 0;
162 while(dernierJoueurAfficher >
darts->
getListJoueur().size() || premierJoueurAfficher < 0)
164 if(premierJoueurAfficher < 0)
166 premierJoueurAfficher++;
167 dernierJoueurAfficher++;
172 premierJoueurAfficher--;
173 dernierJoueurAfficher--;
177 for(
int i = premierJoueurAfficher; i < dernierJoueurAfficher; i++)
181 ui->scoreActuel->setText(score);
192 ui->tournoisManche->setText(
"Manche " + QString::number(
darts->
getManche()));
204 if(QFileInfo(qApp->applicationDirPath() +
"/impact/IMPACT_" + QString::number(typePoint) +
"_" + QString::number(point) +
".png").exists())
206 QImage impact(qApp->applicationDirPath() +
"/impact/IMPACT_" + QString::number(typePoint) +
"_" + QString::number(point) +
".png");
208 QPixmap cibleImpacte =
ui->labelVisualisationimpact->pixmap()->copy();
210 QPainter p(&cibleImpacte);
212 p.drawImage(QPoint(0, 0), impact);
216 ui->labelVisualisationimpact->setPixmap(cibleImpacte);
217 ui->ImpactCibleTournois->setPixmap(cibleImpacte);
247 ui->labelStatut->setStyleSheet(
"color: rgb(109, 43,107); border-color: rgb(109, 43,107);");
262 int premierJoueurAfficher = 0;
270 while(dernierJoueurAfficher >
darts->
getListJoueur().size() || premierJoueurAfficher < 0)
272 if(premierJoueurAfficher < 0)
274 premierJoueurAfficher++;
275 dernierJoueurAfficher++;
280 premierJoueurAfficher--;
281 dernierJoueurAfficher--;
286 for(
int i = premierJoueurAfficher; i < dernierJoueurAfficher; i++)
297 ui->nomJoueur->setText(nomjoueur);
307 QString moyenneVoleeJoueur;
308 QString moyenneVoleesJoueur;
310 int premierJoueurAfficher = 0;
315 for(
int i = premierJoueurAfficher; i < 7; i++)
320 for(
int i = 7; i < dernierJoueurAfficher; i++)
325 ui->moyenneVolee->setText(moyenneVoleeJoueur);
326 ui->lineSeparateurMoyenne->setVisible(
true);
327 ui->moyenneVolee2->setText(moyenneVoleesJoueur);
331 for(
int i = premierJoueurAfficher; i < dernierJoueurAfficher; i++)
335 ui->moyenneVolee->setText(moyenneVoleeJoueur);
337 ui->labelMoyenneVolees->setVisible(
true);
338 ui->lineScoreActuel->setVisible(
true);
339 ui->labelMoyenneVoleesStatistique->setVisible(
true);
340 ui->moyenneVolees->setText(moyenneVoleeJoueur + moyenneVoleesJoueur);
370 ui->labelStatut->setText(
"Volée annulée !");
371 ui->statutImpactTournois->setText(
"Volée annulée !");
388 ui->labelMoyenneVoleesStatistique->setVisible(
true);
390 ui->moyenneVolees->setVisible(
true);
394 ui->winnerPartie->setText(gagnant);
395 ui->voleeMax->setText(QString::number(voleeMaxJoueur) +
" points");
410 ui->manche->setText(
"1");
411 ui->nomJoueur->setText(
"");
412 ui->scoreActuel->setText(
"");
413 ui->typeJeu->setText(
"");
414 ui->winnerPartie->setText(
"Winner ....");
415 ui->labelStatut->setText(
"");
416 ui->moyenneVolee->setText(
"");
417 ui->moyenneVolee2->setText(
"");
418 ui->nbVolees->setText(
"");
419 ui->voleeMax->setText(
"");
420 ui->moyenneVolees->setText(
"");
421 ui->labelMoyenneVolees->setVisible(
false);
422 ui->lineScoreActuel->setVisible(
false);
423 ui->lineSeparateurMoyenne->setVisible(
false);
424 ui->labelMoyenneVoleesStatistique->setVisible(
false);
425 ui->ecranPartie->setStyleSheet(
"QWidget#ecranPartie{background-image:url(:/ressources/background.jpg);}");
427 ui->labelINfoMatch->setVisible(
false);
430 ui->tournoisNom->setText(
"----------");
431 ui->modeDeJeuTournois->setText(
"");
432 ui->nomJoueurTournois1->setText(
"");
433 ui->nomJoueurTournois2->setText(
"");
434 ui->scoreJoueurTournois1->setText(
"\n⇓\n");
435 ui->scoreJoueurTournois2->setText(
"\n⇓\n");
436 ui->moyenneJoueurTournois1->setText(
"\n⇓\n" );
437 ui->moyenneJoueurTournois2->setText(
"\n⇓\n" );
438 ui->tournoisManche->setText(
"Manche 1");
439 ui->statutImpactTournois->setText(
"");
443 musique.setLoops(QSound::Infinite);
457 int ecranCourant =
Page(
ui->ecranDarts->currentIndex());
459 ui->ecranDarts->setCurrentIndex(ecranSuivant);
470 ui->ecranDarts->setCurrentIndex(page);
480 int ecranCourant =
ui->ecranDarts->currentIndex();
481 int ecranPrecedent = (ecranCourant-1)%
int(
Ihm::NbPages);
482 if(ecranPrecedent == -1)
484 ui->ecranDarts->setCurrentIndex(ecranPrecedent);
504 ui->labelStatutAttente->setText(
"⇒ Attente configuration de la partie ⇐");
514 ui->labelStatutAttente->setText(
"⇒ En attente de connexion ⇐");
524 ui->labelStatutAttente->setText(
"⇒ Prêt à lancer le tournoi ⇐");
540 ui->ecranPartie->setStyleSheet(
"QWidget#ecranPartie{background-image:url(:/ressources/backgroundHeure.jpg);}");
541 ui->labelTempsPartie->setText(dureeSeance.toString(
"hh : mm : ss"));
542 ui->tempsPartie->setText(dureeSeance.toString(
"hh : mm : ss"));
543 ui->tournoisChrono->setText(dureeSeance.toString(
"hh : mm : ss"));
547 ui->labelTempsPartie->setText(dureeSeance.toString(
"mm : ss"));
548 ui->tempsPartie->setText(dureeSeance.toString(
"mm : ss"));
549 ui->tournoisChrono->setText(dureeSeance.toString(
"mm : ss"));
561 ui->labelStatut->setStyleSheet(
"color: rgb(179, 0,5); border-color: rgb(179, 0,5);");
562 ui->labelStatut->setText(solution);
563 ui->statutImpactTournois->setText(solution);
575 QImage pause(
":pause.png");
576 QPixmap cibleImpacte =
ui->labelVisualisationimpact->pixmap()->copy();
577 QPainter p(&cibleImpacte);
578 p.drawImage(QPoint(0, 0), pause);
580 ui->labelVisualisationimpact->setPixmap(cibleImpacte);
581 ui->ImpactCibleTournois->setPixmap(cibleImpacte);
582 ui->labelTempsPartie->setStyleSheet(
"color: rgb(179, 0,5);");
596 ui->labelTempsPartie->setStyleSheet(
"color: rgb(109, 43,107);");
598 qDebug() << Q_FUNC_INFO << endl;
621 ui->labelVisualisationimpact->setPixmap(QPixmap(
":/ressources/cible.png"));
622 ui->ImpactCibleTournois->setPixmap(QPixmap(
":/ressources/cible.png"));
635 ui->labelStatutAttente->setText(statut);
650 qDebug() << Q_FUNC_INFO <<
"Pour avoir les sons, ajouter le pack disponible à cette adresse dans le build de votre application:"<<endl;
651 qDebug() << Q_FUNC_INFO <<
"https://drive.google.com/file/d/1vH0tLe8lsu2VQLISDL94nJBA2arfLcbG/view?usp=sharing"<<endl;
662 player =
new QMediaPlayer;
669 connect(
player, SIGNAL(
error(QMediaPlayer::Error)),
this, SLOT(
error(QMediaPlayer::Error)));
683 player->setMedia(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QString(
"/" + regle +
".mp4")));
732 qDebug() << Q_FUNC_INFO << state;
733 if(state == QMediaPlayer::StoppedState)
757 qDebug() << Q_FUNC_INFO <<
player->errorString() <<
error;
768 ui->tournoisNom->setText(
"Tournoi " + nomTournois);
769 ui->modeDeJeuTournois->setText(modeJeu);
780 ui->tournoisManche->setText(
"Manche " + QString::number(
darts->
getManche()));
848 QString joueurTournois =
"";
850 for(
int i = 0 ; i < joueurs.size(); i++)
855 joueurTournois =
" 1er ➠ " + joueurs[i].getNom() +
"\n";
859 joueurTournois = joueurTournois +
" "+ QString::number(i + 1) +
"ème ➠ " + joueurs[i].getNom() +
"\n";
863 ui->winnerTournois->setText(
"↢ " + nomGagnant +
" grand(e) gagnant(e) du tournoi " + nomTournois +
" ↣");
864 ui->recapPlaceTournois->setText(joueurTournois);
875 ui->labelINfoMatch->setVisible(
true);
void mettreAJourMessageStatut(int typePoint, int point)
Méthode qui met à jour le message de statut de la volée en cours.
void miseAJourEtatPartieAttente()
Méthode appelé pour mettre à jour l'état de la partie à Attente.
QList< Joueur > getListJoueur() const
Retourne une liste des joueurs.
void stateChanged(QMediaPlayer::State state)
Méthode appelée quand l'état de la vidéo change.
Communication * communication
objet communication
void mettreAJourCible()
Méthode qui reinitialise l'affichage de la cible.
void afficherFinTournois(QString nomGagnant, QString nomTournois, QList< Joueur > joueurs)
Méthode qui gère l'affichage quand le tournoi est terminé
void jouerSon(QString son)
Méthode qui permet de jouer un son.
QPixmap sauvegardeImpactEncours
sauvegarde le QPixmap de l'état de la cible
void lancerRegle(QString regle)
Méthode qui lance la vidéo explicative des regles suivant le type de jeu.
void allerPageSuivante()
Méthode qui permet de changer de QStackedWidget avec la suivante.
void mettreAJourJoueurTournoi()
Méthode qui initialise l'affichage du mode et des joueurs de la partie.
void allerPagePrecedente()
Méthode qui permet de changer de QStackedWidget avec la Précédente.
QMediaPlayer * player
objet player
void afficherVoleeAnnulee()
Méthode qui affiche le message de statut "volée annulée".
void mettrePausePartie()
Mets en pause le chronométrage de la partiee.
QSound musiquePause
objet musiquePause
void mettreAJourMoyenneVolee()
Méthode qui initialise l'affichage du mode et des joueurs de la partie.
QSound musique
objet musique
Solution * getSolution() const
retourne l'objet solution
void initialiserAffichageTournois(QString modeJeu, QString nomTournois)
Méthode qui initialise l'affichage du tournois.
Ui::Ihm * ui
object de notre Ihm
int getPointVolees() const
Retourne la manche.
void finirPartie(QString gagnant, int voleeMaxJoueur, bool tournois)
Méthode qui met à jour l'affichage quand la partie est fini.
void initialiserEvenements()
Méthode qui initialise les connexion signals/slots de Qt.
void afficherPartie()
Méthode qui met a jour le mode de jeu et la page actif.
#define CHEMIN_FICHIER_MUSIQUE
Définit le chemin pour les sons.
int getManche() const
Retourne la manche.
int sauverEtatPartie
Contient l'état de la partie avant l'affichage des règles.
int getPremierJoueur() const
Retourne le premier Joueur a jouer.
~Ihm()
Destructeur de la classe Ihm.
void fermerApplication()
Méthode qui permet de quitter l'application.
void miseAJourEtatPartiePause()
Méthode appelé pour mettre à jour l'état de la partie à Pause.
void afficherPretLancerTournois()
void demarrer()
Méthode qui démarre le serveur.
QString messageStatut
contient le message de statut qui est affiché
Page
Définit les différentes pages de l'IHM.
void afficherImpact(int typePoint, int point)
Méthode qui affiche la cible correspondante à l'impact (si fichier Image Impact et disponible) et les...
void afficherInformationTournois()
Méthode qui gère l'affichage des informations du tournoi.
QTimer * timerHorloge
objet timerHorloge
void afficherDureePartie()
Affiche la durée d'une Seance(slot)
void mettreAJourManche()
Méthode qui met à jour le numero de la manche.
void initialiserHorloge()
initialise l'horloge pour un affichage périodique
QVideoWidget * videoWidget
objet videoWidget
Déclaration de la classe Darts (Module Ecran-DARTS)
void afficherNouvellePartie()
Méthode qui met à jour l'affichage pour lancer une nouvelle partie.
void mettreAJoursolution(QString solution)
Affiche les solutions possibles pour finir la parties.
void mettreAJourMoyenneVoleeTournois()
Méthode qui met a jour la moyenne des Volee du joueur.
int getJoueurActif() const
Retourne le numéro du joueur actif.
void mettreAJourJoueur()
Méthode qui initialise l'affichage du mode et des joueurs de la partie.
void testerEtatPartie()
Méthode appelée pour remettre l'état dans lequel était la partie avant l'affichage des règles...
void StopperLectureRegle()
methode qui stop la lecture de la musique
QString getModeDeJeu() const
Retourne le mode de jeu.
void relancerpartie()
relancer le chronométrage de la partie
Déclaration de la classe Ihm (Module Ecran-DARTS)
void allerPage(Ihm::Page page)
Méthode qui permet de changer de QStackedWidget avec la Précédente.
void mettreAJourScore()
Méthode qui met à jour le score dans L'ihm.
int getEtatPartie()
Méthode qui permet de recuperer l'etat de la partie.
void attribuerRaccourcisClavier()
Méthode qui initialise les raccourcis clavier.
Déclaration de la classe Communication via la liaison Bluetooth (Module Ecran-DARTS) ...
void mettreAJourScoreTournois()
methode qui met a jour le score des joueurs des tournois
void miseAJourEtatPartieFin()
Slot appelé pour mettre à jour l'état de la partie à Fin.
void lancerTournois()
methode qui affiche le l'ecran de tournois
void miseAJourEtatPartieEnCours()
Slot appelé pour mettre à jour l'état de la partie à EnCours.
Déclaration de la classe Ihm (Module Ecran-DARTS)
#define PERIODE_HORLOGE
Définit la périodicité de l'horloge en millisecondes.
int getNbVolees() const
Retourne le nombre de volées de la partie.
void error(QMediaPlayer::Error error)
Méthode appelée quand il y a une erreur de vidéo.
int getDernierJoueur() const
Retourne le dernier joueur a jouer.
int compteurDureePartie
compteur de secondes pour la durée d'une séance
void miseAJourEtatPartieRegle()
Méthode appelé pour mettre à jour l'état de la partie à regle.
void actualiserHeure()
Méthode qui met a jour l'heure sur l'application.
void afficherAttenteConnexion()
Méthode qui permet de mettre a jour le message de status "appareil deconnecté".
void afficherAttenteConfiguration()
Méthode qui permet de mettre a jour le message de status "nouvelle appareil connecté".
Ihm(QWidget *parent=nullptr)
Constructeur de la classe Ihm.
void initialiserAffichageRegle()
Méthode qui initialise l'affichage vidéo des règles.