![]() |
TTPA (Écran)
1.1
BTS SN-IR La Salle Avignon 2018
|
#include <table.h>
Connecteurs publics | |
void | rafraichirInactif () |
Fonctions membres publiques | |
CTable (QWidget *parent=0) | |
void | setFiletTaille (float ratio) |
void | rafraichirCSS (float ratio) |
Definis la hauteur du filet en utilisant la hauteur de la fenetre actuelle. | |
bool | impacterZone (uint8_t numeroZone) |
Rafraichit le CSS en utilisant la hauteur de la fenetre actuelle. | |
void | setZoneRobot (uint8_t zone) |
Calcul et affiche l'impact sur l'IHM et la table. | |
void | setZoneObjectif (uint8_t zone) |
Place le robot sur la table. | |
void | resetSeance () |
Place la zone objectif sur la table. | |
void | resetStatistiques () |
Reset complet des variables des statistiques. | |
void | balleEnJeu () |
Reset des statistiques uniquement. | |
void | resetNbBallesZone () |
La balle a bien été mise en jeu par la machine, BalleTotal est incrémenté | |
void | finirSeance () |
Reset du nombre de balles dans chaque zone. | |
int | getBallesBonnes () |
int | getBallesTotal () |
Récupere le nombre de balles ayant été jouées et renvoyé par le joueur. | |
int | getBallesMaximum () |
Récupere le nombre de balles ayant été jouées par la machine (en comptant celles n'ayant pas atteint une zone car le joueur est mauvais ( ͡° ͜ʖ ͡°)) | |
int | getBallesObjectif () |
Récupere le nombre de balles maximum pour la seance. | |
int | getBallesEnchainees () |
Récupere le nombre de balles correspondant à la zone objectif actuel. | |
int | getBallesHorsTable () |
Récupere le nombre de balles enchainées. | |
int | getZoneToucheePrec () |
Récupere le nombre de balles hors table. | |
void | setBallesMaximum (int nb) |
Récupere la zone touchée précédente. | |
uint8_t | getZoneObjectif () |
Définis le nombre de balles maximum pour la séance. | |
bool | getBalleCoteTablePrec () |
Recupère le numero de la case Objectif. | |
bool | getBalleCoteTable () |
Récupère le coté de la table ou la balle a frapé en dernier. | |
void | setLayerEcran (uint8_t layer, float tailleFenetreY) |
Récupère le coté de la table ou la balle a frapé juste avant la derniere. | |
Attributs publics | |
QStringList | m_args |
QLabel * | m_pOverlayText |
Fonctions membres privées | |
void | rafraichirNbBallesZone () |
Corrections lié au changement de fenetre. | |
Attributs privés | |
QGridLayout * | m_pGridLayout |
Rafraichit le nombre de balles par zone. | |
QVector< QLabel * > | m_pZones |
QLabel * | m_pFilet |
QLabel * | m_pOverlay |
int | m_iBallesBonnes |
int | m_iBallesMaximum |
int | m_iBallesTotal |
int | m_iBallesEnchainees |
int | m_iBallesEnchaineesMax |
int | m_iBallesHorsTable |
int | m_iBallesDansZone [NB_ZONES] |
int | m_iZoneTouchee |
int | m_iZoneToucheePrec |
int | m_iZoneRobot |
int | m_iZoneObjectif |
bool | m_bBalleCoteTable |
bool | m_bBalleCoteTablePrec |
QFont | m_font |
QFont | m_fontBig |
QFont | m_fontOverlay |
QString | m_fondInactif |
QString | m_fondActif |
QString | m_fondRobot |
QString | m_fondObjectif |
QString | m_fondRate |
CTable::CTable | ( | QWidget * | parent = 0 | ) | [explicit] |
Références CSS_FOND_INACTIF, m_args, m_font, m_pFilet, m_pGridLayout, m_pOverlay, m_pZones, NB_ZONES, resetSeance(), et WIDGET_SIZE_MAX.
: QWidget(parent) { //=============================== // GRAPHIQUE //=============================== m_pGridLayout = new QGridLayout(this); //=============================== // OVERLAY TABLE //=============================== m_pOverlay = new QLabel(this); m_pOverlay->setStyleSheet(QString::fromUtf8("QLabel\n" "{\n" " border-image: url(:/images/resources/table.jpg) 0 0 0 0 stretch stretch;\n" "}")); m_pOverlay->setMinimumSize(QSize(0, WIDGET_SIZE_MAX)); m_pOverlay->setMaximumSize(QSize(WIDGET_SIZE_MAX, WIDGET_SIZE_MAX)); m_pGridLayout->addWidget(m_pOverlay, 0, 0, 3, 3); //=============================== // ZONES //=============================== QLabel* pZone; for(uint8_t i=0; i < NB_ZONES; i++) { pZone = new QLabel(this); pZone->setText("Zone " + QString::number(i+1)); pZone->setFont(m_font); pZone->setStyleSheet(CSS_FOND_INACTIF); pZone->setAlignment(Qt::AlignCenter); //---------------------------------- m_pZones.push_back(pZone); m_pGridLayout->addWidget(pZone, (i/3), (i%3)); } //=============================== // OVERLAY TEXT //=============================== /* Affichage SUR la table m_pOverlayText = new QLabel(this); m_pOverlayText->setMinimumSize(QSize(0, WIDGET_SIZE_MAX)); m_pOverlayText->setMaximumSize(QSize(WIDGET_SIZE_MAX, WIDGET_SIZE_MAX)); m_pOverlayText->setText(""); m_fontOverlay.setPointSize(12); m_pOverlayText->setFont(m_fontOverlay); m_pOverlayText->setAlignment(Qt::AlignCenter); m_pGridLayout->addWidget(m_pOverlayText, 0, 0, 3, 3); m_pOverlayText->setStyleSheet(QString::fromUtf8("QLabel\n" "{\n" " background-color: rgb(0, 0, 0, 0);\n" " color: rgba(0,0,0,0);\n" "}")); */ //=============================== // FILET //=============================== m_pFilet = new QLabel(this); m_pFilet->setStyleSheet(QString::fromUtf8("QLabel\n" "{\n" " background: url(:/images/resources/filet.jpg) cover;\n" "}")); m_pFilet->setMinimumSize(QSize(4, WIDGET_SIZE_MAX)); m_pFilet->setMaximumSize(QSize(WIDGET_SIZE_MAX, 50)); m_pGridLayout->addWidget(m_pFilet, 4, 0, 1, 0); //=============================== setLayout(m_pGridLayout); m_pGridLayout->setSpacing(0); //=============================== // LOGIQUE //=============================== resetSeance(); //AUTRE m_args.clear(); }
void CTable::balleEnJeu | ( | ) |
*
Références getBalleCoteTable(), getBalleCoteTablePrec(), m_bBalleCoteTable, m_bBalleCoteTablePrec, m_iBallesHorsTable, et m_iBallesTotal.
Référencé par CIhm::balleEnJeu().
{ m_iBallesTotal++; // rafraichirNbBallesZone(); m_bBalleCoteTablePrec = m_bBalleCoteTable; m_bBalleCoteTable = false; if(getBalleCoteTablePrec() == false && getBalleCoteTable() == false) { qDebug() << Q_FUNC_INFO << " La Balle n'as pas ete renvoye"; m_iBallesHorsTable++; } }
void CTable::finirSeance | ( | ) |
*
Références getBalleCoteTable(), getBalleCoteTablePrec(), m_bBalleCoteTable, m_bBalleCoteTablePrec, et m_iBallesHorsTable.
Référencé par CIhm::finirSeance().
{ m_bBalleCoteTablePrec = m_bBalleCoteTable; m_bBalleCoteTable = false; if(getBalleCoteTablePrec() == false && getBalleCoteTable() == false) { qDebug() << Q_FUNC_INFO << " La derniere balle n'as jamais ete renvoyé"; m_iBallesHorsTable++; } }
bool CTable::getBalleCoteTable | ( | ) |
Références m_bBalleCoteTable.
Référencé par balleEnJeu(), et finirSeance().
{return m_bBalleCoteTable;}
bool CTable::getBalleCoteTablePrec | ( | ) |
*
Références m_bBalleCoteTablePrec.
Référencé par balleEnJeu(), et finirSeance().
{return m_bBalleCoteTablePrec;}
int CTable::getBallesBonnes | ( | ) |
int CTable::getBallesEnchainees | ( | ) |
*
Références m_iBallesEnchainees.
Référencé par CIhm::finirSeance().
{ return m_iBallesEnchainees; }
int CTable::getBallesHorsTable | ( | ) |
*
Références m_iBallesHorsTable.
Référencé par CIhm::rafraichirStats().
{ return m_iBallesHorsTable;}
int CTable::getBallesMaximum | ( | ) |
*
Références m_iBallesMaximum.
Référencé par CIhm::ballesTotalSurBallesMaximum().
{ return m_iBallesMaximum; }
int CTable::getBallesObjectif | ( | ) |
*
Références m_iBallesDansZone, et m_iZoneObjectif.
Référencé par CIhm::finirSeance().
{ return m_iBallesDansZone[m_iZoneObjectif]; }
int CTable::getBallesTotal | ( | ) |
*
Références m_iBallesTotal.
Référencé par CIhm::ballesTotalSurBallesMaximum(), CIhm::finirSeance(), et CIhm::rafraichirStats().
{ return m_iBallesTotal; }
uint8_t CTable::getZoneObjectif | ( | ) |
*
nombre | de balles en INT |
Références m_iZoneObjectif.
Référencé par CIhm::finirSeance().
{ return m_iZoneObjectif; }
int CTable::getZoneToucheePrec | ( | ) |
*
bool CTable::impacterZone | ( | uint8_t | numeroZone | ) |
*
usuellement | getRatioFenetreY() de CIhm |
Références CSS_FOND_ACTIF, CSS_FOND_RATE, DELAI_COUP, m_bBalleCoteTable, m_bBalleCoteTablePrec, m_fontBig, m_iBallesBonnes, m_iBallesDansZone, m_iBallesEnchainees, m_iBallesEnchaineesMax, m_iBallesHorsTable, m_iBallesTotal, m_iZoneObjectif, m_iZoneRobot, m_iZoneTouchee, m_iZoneToucheePrec, m_pZones, NB_ZONES, rafraichirInactif(), rafraichirNbBallesZone(), et ZONE_AUCUNE.
Référencé par CIhm::impacterZone().
{ qDebug() << Q_FUNC_INFO; if (numeroZone >= NB_ZONES || numeroZone == m_iZoneRobot) return false; if (m_iBallesBonnes + m_iBallesHorsTable >= m_iBallesTotal) return false; m_bBalleCoteTablePrec = m_bBalleCoteTable; m_bBalleCoteTable = true; qDebug() << Q_FUNC_INFO << numeroZone; m_iZoneToucheePrec = m_iZoneTouchee; m_iZoneTouchee = numeroZone; m_iBallesBonnes++; m_iBallesDansZone[numeroZone]++; rafraichirNbBallesZone(); if (numeroZone != ZONE_AUCUNE) { if (numeroZone == m_iZoneObjectif || m_iZoneObjectif == ZONE_AUCUNE) { m_pZones[numeroZone]->setStyleSheet(CSS_FOND_ACTIF); m_iBallesEnchainees++; } else { m_pZones[numeroZone]->setStyleSheet(CSS_FOND_RATE); m_iBallesEnchainees = 0; } m_pZones[numeroZone]->setFont(m_fontBig); } else m_iBallesEnchainees = 0; if (m_iBallesEnchainees > m_iBallesEnchaineesMax) m_iBallesEnchaineesMax = m_iBallesEnchainees; m_iZoneTouchee = numeroZone; QTimer::singleShot(DELAI_COUP, this, SLOT(rafraichirInactif())); return true; }
void CTable::rafraichirCSS | ( | float | ratio | ) |
*
usuellement | getRatioFenetreY() de CIhm |
Références CSS_FOND_INACTIF, m_font, m_fontBig, m_fontOverlay, m_pZones, NB_ZONES, TAILLE_OVERLAY, TAILLE_TEXTE, TAILLE_TEXTE_NB, et TAILLE_TEXTE_NB_BIG.
Référencé par CIhm::rafraichirCSS().
{ m_font.setPointSize((int)(TAILLE_TEXTE_NB*ratio)); m_font.setBold(true); m_fontBig.setPointSize((int)(TAILLE_TEXTE_NB_BIG*ratio)); m_fontBig.setBold(true); m_fontOverlay.setPointSize((int)(TAILLE_OVERLAY*ratio)); qDebug() << Q_FUNC_INFO << (TAILLE_TEXTE*ratio); for(uint8_t i=0; i < NB_ZONES; i++) { m_pZones[i]->setFont(m_font); m_pZones[i]->setStyleSheet(CSS_FOND_INACTIF); } //m_pOverlayText->setFont(m_fontOverlay); }
void CTable::rafraichirInactif | ( | ) | [slot] |
Références CSS_FOND_INACTIF, CSS_FOND_OBJECTIF, m_font, m_iZoneObjectif, m_iZoneRobot, m_pZones, et NB_ZONES.
Référencé par impacterZone().
{ qDebug() << Q_FUNC_INFO; for(uint8_t i=0; i < NB_ZONES; i++) { if (i != m_iZoneRobot) { if (i == m_iZoneObjectif) m_pZones[i]->setStyleSheet(CSS_FOND_OBJECTIF); else m_pZones[i]->setStyleSheet(CSS_FOND_INACTIF); } m_pZones[i]->setFont(m_font); } }
void CTable::rafraichirNbBallesZone | ( | ) | [private] |
Références m_iBallesDansZone, m_iBallesTotal, m_iZoneRobot, m_pZones, et NB_ZONES.
Référencé par impacterZone(), resetNbBallesZone(), setZoneObjectif(), et setZoneRobot().
{ qDebug() << Q_FUNC_INFO; for(uint8_t i=0; i < NB_ZONES; i++) { if (i != m_iZoneRobot) { if (m_iBallesTotal) m_pZones[i]->setText(QString::number(((double(m_iBallesDansZone[i])/double(m_iBallesTotal)*100)),'f',0) + '%'); else m_pZones[i]->setText(QString::number(0) + '%'); } } }
void CTable::resetNbBallesZone | ( | ) |
*
Références m_iBallesDansZone, NB_ZONES, et rafraichirNbBallesZone().
Référencé par resetSeance(), et resetStatistiques().
{ for(uint8_t i=0; i < NB_ZONES; i++) { m_iBallesDansZone[i] = 0; // m_pZones[i]->setText(QString::number(0) + '%'); // m_pZones[i]->setStyleSheet(CSS_FOND_INACTIF); } rafraichirNbBallesZone(); }
void CTable::resetSeance | ( | ) |
*
enum | zones_e, voir const.h |
Références DEV_BALLESMAX, m_args, m_iBallesEnchainees, m_iBallesEnchaineesMax, m_iBallesMaximum, m_iZoneObjectif, m_iZoneRobot, resetNbBallesZone(), resetStatistiques(), setBallesMaximum(), et ZONE_AUCUNE.
Référencé par CTable(), et CIhm::resetSeance().
{ m_iBallesMaximum = 0; m_iBallesEnchainees = 0; m_iBallesEnchaineesMax = 0; m_iZoneRobot = m_iZoneObjectif = ZONE_AUCUNE; resetNbBallesZone(); resetStatistiques(); if (m_args.contains("-dev")) setBallesMaximum(DEV_BALLESMAX); }
void CTable::resetStatistiques | ( | ) |
*
Références m_bBalleCoteTable, m_bBalleCoteTablePrec, m_iBallesBonnes, m_iBallesEnchainees, m_iBallesHorsTable, m_iBallesTotal, m_iZoneTouchee, m_iZoneToucheePrec, resetNbBallesZone(), et ZONE_AUCUNE.
Référencé par CIhm::commencerSeance(), et resetSeance().
{ m_iZoneToucheePrec = m_iZoneTouchee = ZONE_AUCUNE; m_iBallesBonnes = 0; m_iBallesTotal = 0; m_iBallesEnchainees = 0; m_iBallesHorsTable = 0; m_bBalleCoteTable = true; m_bBalleCoteTablePrec = true; resetNbBallesZone(); }
void CTable::setBallesMaximum | ( | int | nb | ) |
*
Références m_iBallesMaximum.
Référencé par CIhm::gererArguments(), resetSeance(), et CIhm::setBallesMaximum().
{ m_iBallesMaximum = nb; }
void CTable::setFiletTaille | ( | float | ratio | ) |
Références HAUTEUR_FILET, m_pFilet, et WIDGET_SIZE_MAX.
Référencé par CIhm::initialisationFenetre().
{ m_pFilet->setMinimumSize(QSize(4, (float)HAUTEUR_FILET*ratio)); m_pFilet->setMaximumSize(QSize(WIDGET_SIZE_MAX, (float)HAUTEUR_FILET*ratio)); qDebug() << Q_FUNC_INFO << ((float)HAUTEUR_FILET*ratio); }
void CTable::setLayerEcran | ( | uint8_t | layer, |
float | tailleFenetreY | ||
) |
Références LAYER_RECAP, m_font, m_pZones, NB_ZONES, et TAILLE_TEXTE_NB.
Référencé par CIhm::setLayerEcran().
{ qDebug() << Q_FUNC_INFO << " layer: " << layer << "tailleFenetreY: " << tailleFenetreY; int tailleTexte; if (layer == LAYER_RECAP) tailleTexte = TAILLE_TEXTE_NB*(tailleFenetreY/1.75); else tailleTexte = TAILLE_TEXTE_NB*(tailleFenetreY); m_font.setPointSize((int)tailleTexte); for(uint8_t i=0; i < NB_ZONES; i++) { m_pZones[i]->setFont(m_font); } }
void CTable::setZoneObjectif | ( | uint8_t | zone | ) |
*
enum | zones_e, voir const.h |
Références CSS_FOND_INACTIF, CSS_FOND_OBJECTIF, m_iZoneObjectif, m_iZoneTouchee, m_iZoneToucheePrec, m_pZones, NB_ZONES, rafraichirNbBallesZone(), et ZONE_AUCUNE.
Référencé par CIhm::setZoneObjectif(), et CIhm::setZoneObjectifRandom().
{ qDebug() << Q_FUNC_INFO; if ((numeroZone >= NB_ZONES && numeroZone != ZONE_AUCUNE)) { qDebug() << "/!\\ Erreur Zone /!\\"; return; } if (m_iZoneObjectif < NB_ZONES) m_pZones[m_iZoneObjectif]->setStyleSheet(CSS_FOND_INACTIF); m_iZoneObjectif = numeroZone; if (m_iZoneTouchee == numeroZone) m_iZoneTouchee = ZONE_AUCUNE; if (m_iZoneToucheePrec == numeroZone) m_iZoneToucheePrec = ZONE_AUCUNE; if (m_iZoneObjectif < NB_ZONES) { m_pZones[numeroZone]->setStyleSheet(CSS_FOND_OBJECTIF); } rafraichirNbBallesZone(); }
void CTable::setZoneRobot | ( | uint8_t | zone | ) |
*
enum | zones_e, voir const.h |
Références CSS_FOND_INACTIF, CSS_FOND_ROBOT, m_iZoneRobot, m_iZoneTouchee, m_iZoneToucheePrec, m_pZones, NB_ZONES, rafraichirNbBallesZone(), et ZONE_AUCUNE.
Référencé par CIhm::setZoneRobot(), et CIhm::setZoneRobotRandom().
{ qDebug() << Q_FUNC_INFO; if ((numeroZone >= NB_ZONES && numeroZone != ZONE_AUCUNE)) { qDebug() << "/!\\ Erreur Zone /!\\"; return; } if (m_iZoneRobot < NB_ZONES) m_pZones[m_iZoneRobot]->setStyleSheet(CSS_FOND_INACTIF); m_iZoneRobot = numeroZone; if (m_iZoneTouchee == numeroZone) m_iZoneTouchee = ZONE_AUCUNE; if (m_iZoneToucheePrec == numeroZone) m_iZoneToucheePrec = ZONE_AUCUNE; if (m_iZoneRobot < NB_ZONES) { m_pZones[numeroZone]->setStyleSheet(CSS_FOND_ROBOT); m_pZones[numeroZone]->setText("ROBOT"); } rafraichirNbBallesZone(); }
QStringList CTable::m_args |
Référencé par CTable(), CIhm::gererArguments(), et resetSeance().
bool CTable::m_bBalleCoteTable [private] |
Référencé par balleEnJeu(), finirSeance(), getBalleCoteTable(), impacterZone(), et resetStatistiques().
bool CTable::m_bBalleCoteTablePrec [private] |
Référencé par balleEnJeu(), finirSeance(), getBalleCoteTablePrec(), impacterZone(), et resetStatistiques().
QString CTable::m_fondActif [private] |
QString CTable::m_fondInactif [private] |
QString CTable::m_fondObjectif [private] |
QString CTable::m_fondRate [private] |
QString CTable::m_fondRobot [private] |
QFont CTable::m_font [private] |
Référencé par CTable(), rafraichirCSS(), rafraichirInactif(), et setLayerEcran().
QFont CTable::m_fontBig [private] |
Référencé par impacterZone(), et rafraichirCSS().
QFont CTable::m_fontOverlay [private] |
Référencé par rafraichirCSS().
int CTable::m_iBallesBonnes [private] |
Référencé par getBallesBonnes(), impacterZone(), et resetStatistiques().
int CTable::m_iBallesDansZone[NB_ZONES] [private] |
Référencé par getBallesObjectif(), impacterZone(), rafraichirNbBallesZone(), et resetNbBallesZone().
int CTable::m_iBallesEnchainees [private] |
Référencé par getBallesEnchainees(), impacterZone(), resetSeance(), et resetStatistiques().
int CTable::m_iBallesEnchaineesMax [private] |
Référencé par impacterZone(), et resetSeance().
int CTable::m_iBallesHorsTable [private] |
Référencé par balleEnJeu(), finirSeance(), getBallesHorsTable(), impacterZone(), et resetStatistiques().
int CTable::m_iBallesMaximum [private] |
Référencé par getBallesMaximum(), resetSeance(), et setBallesMaximum().
int CTable::m_iBallesTotal [private] |
Référencé par balleEnJeu(), getBallesTotal(), impacterZone(), rafraichirNbBallesZone(), et resetStatistiques().
int CTable::m_iZoneObjectif [private] |
Référencé par getBallesObjectif(), getZoneObjectif(), impacterZone(), rafraichirInactif(), resetSeance(), et setZoneObjectif().
int CTable::m_iZoneRobot [private] |
Référencé par impacterZone(), rafraichirInactif(), rafraichirNbBallesZone(), resetSeance(), et setZoneRobot().
int CTable::m_iZoneTouchee [private] |
Référencé par impacterZone(), resetStatistiques(), setZoneObjectif(), et setZoneRobot().
int CTable::m_iZoneToucheePrec [private] |
Référencé par impacterZone(), resetStatistiques(), setZoneObjectif(), et setZoneRobot().
QLabel* CTable::m_pFilet [private] |
Référencé par CTable(), et setFiletTaille().
QGridLayout* CTable::m_pGridLayout [private] |
*
Référencé par CTable().
QLabel* CTable::m_pOverlay [private] |
Référencé par CTable().
QLabel* CTable::m_pOverlayText |
QVector<QLabel*> CTable::m_pZones [private] |
Référencé par CTable(), impacterZone(), rafraichirCSS(), rafraichirInactif(), rafraichirNbBallesZone(), setLayerEcran(), setZoneObjectif(), et setZoneRobot().