Étape 5: Le logiciel Qt Quiz
J’ai créé le moteur Quiz avec Qt Creator (édition communautaire) qui est un moyen rapide et facile pour créer des applications GUI C++ sous Windows, mais travaille aussi bien sur Mac et Linux.
Le code enregistre essentiellement la chaîne du gagnant dans un gameWinner QString (donc le nom de tout le monde doit être unique). Dès qu’est défini, aucun autre utilisateur ne peut remplacer que QString jusqu'à ce que le système est réinitialisé avec la touche espace. J’ai joint un zip de tout le code source, mais juste pour que vous pouvez coup d’oeil à travers j’ai inclus la mainWindow en-tête et les fichiers de sources C++ ci-dessous.
Le GUI est actuellement très basique, mais je veux ajouter éventuellement la possibilité pour les noms de joueur d’ajuster et comprennent également la photo du vainqueur de cette manche. Une autre amélioration consisterait à avoir un finaliste de l’émission, dans le cas où le gagnant répond incorrectement à la question.
MainWindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void keyPressEvent(QKeyEvent *event); private slots: void on_reset_clicked(); private: Ui::MainWindow *ui; QString gameWinner; }; #endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include #define PLAYER1 "Dan" #define PLAYER2 "Divya" #define PLAYER3 "Diana" #define PLAYER4 "Jack" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->setFocusPolicy(Qt::StrongFocus); qDebug() << "Launching SpyClub Quiz Engine"; gameWinner = ""; } MainWindow::~MainWindow() { delete ui; } void MainWindow::keyPressEvent(QKeyEvent *event) { if(((event->key() == Qt::Key_Up) || (event->key() == Qt::Key_Right) || (event->key() == Qt::Key_Down) || (event->key() == Qt::Key_Left)) && (gameWinner == "")) gameWinner = "TBC"; switch(event->key()) { case Qt::Key_Up: qDebug() << PLAYER1; if(gameWinner == "TBC") gameWinner = PLAYER1; break; case Qt::Key_Right: qDebug() << PLAYER2; if(gameWinner == "TBC") gameWinner = PLAYER2; break; case Qt::Key_Down: qDebug() << PLAYER3; if(gameWinner == "TBC") gameWinner = PLAYER3; break; case Qt::Key_Left: qDebug() << PLAYER4; if(gameWinner == "TBC") gameWinner = PLAYER4; break; case Qt::Key_Space: qDebug() << "Game Reset!"; gameWinner = ""; break; } if(gameWinner != "") ui->status->setText(gameWinner); else ui->status->setText("No Winner Yet..."); } void MainWindow::on_reset_clicked() { qDebug() << "Game Reset!"; gameWinner = ""; ui->status->setText("No Winner Yet..."); }