TTPA (Écran)  1.1
BTS SN-IR La Salle Avignon 2018
Connecteurs publics | Fonctions membres publiques | Attributs publics | Fonctions membres privées | Attributs privés
Référence de la classe CTable

#include <table.h>

Liste de tous les membres

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

Documentation des constructeurs et destructeur

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();
}

Documentation des fonctions membres

*

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++;
    }
}

*

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++;
    }
}

Références m_bBalleCoteTable.

Référencé par balleEnJeu(), et finirSeance().

*

Références m_bBalleCoteTablePrec.

Référencé par balleEnJeu(), et finirSeance().

Références m_iBallesBonnes.

Référencé par CIhm::finirSeance().

{ return m_iBallesBonnes; }

*

Références m_iBallesEnchainees.

Référencé par CIhm::finirSeance().

{ return m_iBallesEnchainees; }

*

Références m_iBallesHorsTable.

Référencé par CIhm::rafraichirStats().

{ return m_iBallesHorsTable;}

*

Références m_iBallesMaximum.

Référencé par CIhm::ballesTotalSurBallesMaximum().

{ return m_iBallesMaximum; }

*

Références m_iBallesDansZone, et m_iZoneObjectif.

Référencé par CIhm::finirSeance().

*

Paramètres:
nombrede balles en INT

Références m_iZoneObjectif.

Référencé par CIhm::finirSeance().

{ return m_iZoneObjectif; }

*

bool CTable::impacterZone ( uint8_t  numeroZone)

*

Paramètres:
usuellementgetRatioFenetreY() 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)

*

Paramètres:
usuellementgetRatioFenetreY() 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) + '%');
        }
    }
}

*

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::setBallesMaximum ( int  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)

*

Paramètres:
enumzones_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)

*

Paramètres:
enumzones_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();
}

Documentation des données membres

QStringList CTable::m_args
bool CTable::m_bBalleCoteTable [private]
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]
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 impacterZone(), et resetSeance().

int CTable::m_iBallesMaximum [private]
int CTable::m_iBallesTotal [private]
int CTable::m_iZoneObjectif [private]
int CTable::m_iZoneRobot [private]
int CTable::m_iZoneTouchee [private]
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().

QVector<QLabel*> CTable::m_pZones [private]

La documentation de cette classe a été générée à partir des fichiers suivants :
 Tout Classes Fichiers Fonctions Variables Énumérations Valeurs énumérées Macros