Browse Source

Signaux et slots pour le gagnant partie

François Drouhard 3 years ago
parent
commit
33f9f772f6
4 changed files with 22 additions and 19 deletions
  1. 9 9
      Chronometre.cpp
  2. 6 3
      Chronometre.h
  3. 6 4
      MaFenetre.cpp
  4. 1 3
      MaFenetre.h

+ 9 - 9
Chronometre.cpp

@@ -112,7 +112,7 @@ void Chronometre::refresh () {
     temps = temps.addMSecs(-INTERVAL);
     affichage ();
     if (temps <= QTime (0,0,0,0)) {
-        emit fin();
+        emit fin(this);
     }
 }
 
@@ -151,19 +151,19 @@ void Chronometre::basculer () {
 	}
 }
 
+void Chronometre::declareGagnant()
+{
+    emit won(this);
+}
+
 void Chronometre::basculer(Chronometre & Chrono) {
     basculer();
     Chrono.basculer();
 }
 
-// TODO pas clair cet opérateur
-QString Chronometre::operator+=(Chronometre const& joueur) const {
-    if (temps <= QTime (0,0,0,0)) {
-        return joueur.groupBox->title();
-    } else if (joueur.temps <= QTime(0,0,0,0)) {
-        return groupBox->title();
-    }
-    return "Nope";
+QString Chronometre::nomJoueur() const
+{
+    return groupBox->title();
 }
 
 /**

+ 6 - 3
Chronometre.h

@@ -62,15 +62,18 @@ class Chronometre : public QWidget {
     Couleur getCouleur () const;
     void modifierNomJoueur (QString const& joueur);
     void definirTemps (QTime const& tempsDepart);
-    QString operator+=(Chronometre const& joueur) const;
     void addSecs (unsigned int secondes);
+    QString nomJoueur () const;
 
     signals:
-    void fin();
+    void fin(Chronometre *chrono);
+    void won(Chronometre * chrono);
     void is_paused(Chronometre *chrono);
 
+    public slots:
+    void declareGagnant();
 
-    private slots:
+    protected slots:
     void refresh ();
 	
 	private:

+ 6 - 4
MaFenetre.cpp

@@ -118,8 +118,10 @@ MaFenetre::MaFenetre() :
     QObject::connect (actionNouveau, &QAction::triggered , this , &MaFenetre::init);
     QObject::connect (actionOptions , &QAction::triggered , this, &MaFenetre::lancerDialogueOptions);
     QObject::connect (actionQuitter , &QAction::triggered , qApp , &QApplication::quit);
-    QObject::connect (chrono1, &Chronometre::fin, this, &MaFenetre::afficheGagnant);
-    QObject::connect (chrono2, &Chronometre::fin, this, &MaFenetre::afficheGagnant);
+    QObject::connect (chrono1, &Chronometre::fin, chrono2, &Chronometre::declareGagnant);
+    QObject::connect (chrono2, &Chronometre::fin, chrono1, &Chronometre::declareGagnant);
+    QObject::connect (chrono1, &Chronometre::won, this, &MaFenetre::afficheGagnant);
+    QObject::connect (chrono2, &Chronometre::won, this, &MaFenetre::afficheGagnant);
     QObject::connect (chrono1, &Chronometre::is_paused, this, &MaFenetre::ajouterTempsJoueur);
     QObject::connect (chrono2, &Chronometre::is_paused, this, &MaFenetre::ajouterTempsJoueur);
 
@@ -191,13 +193,13 @@ void MaFenetre::arreter () {
     etatBoutons (false , false, true);
 }
 
-void MaFenetre::afficheGagnant() {
+void MaFenetre::afficheGagnant(Chronometre *chrono) {
     arreter();
     if (option->son() == true)
         QSound::play(":/ressources/sonnette.wav");
     QMessageBox message;
     QString texte;
-    texte = "Le joueur " + (*chrono1+=*chrono2) + " a gagné au temps.";
+    texte = chrono->nomJoueur() + " a gagné la partie au temps.";
     message.setText(texte);
     message.setStandardButtons(QMessageBox::Ok);
     message.exec();

+ 1 - 3
MaFenetre.h

@@ -48,12 +48,10 @@ class MaFenetre : public QMainWindow { // On hérite de QMainWindow (IMPORTANT)
     void lancerDialogueOptions();
     void inverser ();
     void changerCouleur ();
-    void afficheGagnant();
+    void afficheGagnant(Chronometre * chrono);
     void ajouterTempsJoueur(Chronometre *chrono);
-
     void closeEvent(QCloseEvent *event);
 
-	
 	private:
 	void keyReleaseEvent (QKeyEvent * evenement);
     void refreshLabel();