Mini projet en langage C pour calculateur de points de championnat en tennis
Mini projet en langage C pour calculateur de points de championnat en tennis
Cet article propose en détaille un mini projet en langage C pour calculateur de points de championnat en tennis.
Ce programme vous permet de calculer les points que vous avez gagné ou bien perdu suite à un match en championnat de tennis de table, il se place dans le cas où vous jouez 3 matches (ou moins). Le coefficient des matches est donc de 1. Vous pouvez bien évidemment mettre moins de matches si vous le désirez. Il sera nécessaire pour l'utiliser d'avoir vos points et ceux de l'adversaire.
Vous pourrez télécharger le fichier au format zip il contient le code sources complet
Extrait du code source :
#include
#include
#include "FenetrePrincipale.h"
int main (int argc, char *argv[])
{
QApplication app(argc,argv);
FenetrePrincipale fenetre;
fenetre.show();
return app.exec();
}
… … … …
#include
#include "FenetrePrincipale.h"
using namespace std;
FenetrePrincipale::FenetrePrincipale()
{
QWidget fenetre;
QVBoxLayout *layoutPrincipal = new QVBoxLayout;
//Definition des points
QFormLayout *points = new QFormLayout;
m_points = new QLineEdit;
points->addRow("Nombre de points du joueur :",m_points);
QGroupBox *info = new QGroupBox;
info->setLayout(points);
//Definition du layout du match 1
m_match1 = new QLineEdit;
m_v1 = new QRadioButton;
m_d1 = new QRadioButton;
QFormLayout *fm1 = new QFormLayout;
fm1->addRow("Points: ",m_match1);
fm1->addRow("Victoire: ",m_v1);
fm1->addRow("Defaite: ",m_d1);
gm1 = new QGroupBox("1er match");
gm1->setCheckable(true);
gm1->setLayout(fm1);
//Definition du layout du match 2
m_match2 = new QLineEdit;
m_v2 = new QRadioButton;
m_d2 = new QRadioButton;
QFormLayout *fm2 = new QFormLayout;
fm2->addRow("Points: ",m_match2);
fm2->addRow("Victoire :",m_v2);
fm2->addRow("Defaite: ",m_d2);
gm2 = new QGroupBox("2eme match");
gm2->setCheckable(true);
gm2->setLayout(fm2);
//Definition du layout du match 3
m_match3 = new QLineEdit;
m_v3 = new QRadioButton;
m_d3 = new QRadioButton;
QFormLayout *fm3 = new QFormLayout;
fm3->addRow("Points: ",m_match3);
fm3->addRow("Victoire: ",m_v3);
fm3->addRow("Defaite: ",m_d3);
gm3 = new QGroupBox("3eme match");
gm3->setCheckable(true);
gm3->setLayout(fm3);
//Defintion du layout des boutons
calcul = new QPushButton("Calcul !");
quit = new QPushButton("Quitter");
aide = new QPushButton("Aide");
QHBoxLayout *layoutbutton = new QHBoxLayout;
layoutbutton->addWidget(calcul);
layoutbutton->addWidget(quit);
layoutbutton->addWidget(aide);
layoutPrincipal->addWidget(info);
layoutPrincipal->addWidget(gm1);
layoutPrincipal->addWidget(gm2);
layoutPrincipal->addWidget(gm3);
layoutPrincipal->addLayout(layoutbutton);
setLayout(layoutPrincipal);
setWindowTitle("Calcul de points FFTT");
resize(300,200);
connect(quit,SIGNAL(clicked()),qApp,SLOT(quit()));
connect(calcul,SIGNAL(clicked()),this,SLOT(calculpoints()));
}
void FenetrePrincipale::calculpoints()
{
float depart,total;
bool ok;
float m1=0,m2=0,m3=0;
float var=0;
QString chaine=NULL;
// Acrrédiation de la variable total
cout << "Accreditation du depart "<<endl;
if(m_points->text().isEmpty())
{
QMessageBox::critical(this,"Erreur", "Veuillez indiquer votre nombre de points initial");
return;
}
else {
depart = m_points->text().toFloat(&ok);
cout << "depart" << depart << endl;
}
if(ok == false)
{
QMessageBox::critical(this,"Erreur","Veuillez mettre un nombre");
return;
}
total = depart;
cout << "total: "<
// Pour les 3 matches
if(gm1->isChecked())
{
if(m_match1->text().isEmpty())
{
QMessageBox::critical(this,"Erreur", "Veuillez mettre un nombre au match 1");
return;
}
else m1 = m_match1->text().toFloat(&ok);
if(ok == false)
{
QMessageBox::critical(this,"Erreur", "Veuillez mettre un nombre au match 1");
return;
}
else if(m_v1->isChecked())
{
total += variationvic(depart,m1);
var+=variationvic(depart,m1);
}
else if(m_d1->isChecked())
{
total += variationdef(depart,m1);
var += variationdef(depart,m1);
}
else
{
QMessageBox::critical(this,"Erreur","Veuillez indiquer le resultat du match 1");
return;
}
}
if(gm2->isChecked())
{
if(m_match2->text().isEmpty())
{
QMessageBox::critical(this,"Erreur","Veuillez mettre un nombre au match 2");
return;
}
else m2 = m_match2->text().toFloat(&ok);
if(ok == false)
{
QMessageBox::critical(this,"Erreur","Veuillez mettre un nombre au match 2");
return;
}
else if(m_v2->isChecked())
{
total += variationvic(depart,m2);
var += variationvic(depart,m2);
}
else if(m_d2->isChecked())
{
total += variationdef(depart,m2);
var += variationdef(depart,m2);
}
else
{
QMessageBox::critical(this,"Erreur","Veuillez indiquer le resultat du match 2");
return;
}
}
if(gm3->isChecked())
{
if(m_match3->text().isEmpty())
{
QMessageBox::critical(this,"Erreur","Veuillez mettre un nombre au match 3");
return;
}
else m3 = m_match3->text().toFloat(&ok);
if(ok == false)
{
QMessageBox::critical(this,"Erreur","Veuillez mettre un nombre au match 3");
return;
}
else if(m_v3->isChecked())
{
total += variationvic(depart,m3);
var += variationvic(depart,m3);
}
else if(m_d3->isChecked())
{
total += variationdef(depart,m3);
var += variationdef(depart,m3);
}
else
{
QMessageBox::critical(this,"Erreur","Veuillez indiquer le resultat du match 3");
return;
}
}
chaine = chaine.setNum(total);
QMessageBox::information(this,"Bilan",chaine);
}
float FenetrePrincipale::variationvic(float depart,float pts)
{
int e = depart - pts;
if(e >= 500)
return 0;
else if(e>=400 && e < 500)
return 0.5;
else if(e>=300 && e < 400)
return 1;
else if(e>=200 && e < 300)
return 2;
else if(e>=150 && e < 200)
return 3;
else if(e>=100 && e < 150)
return 4;
else if(e>=50 && e < 100)
return 5;
else if(e>=25 && e < 50)
return 5.5;
else if(e>=-24 && e < 25)
return 6;
else if(e>=-49 && e < -24)
return 7;
else if(e>=-99 && e < -49)
return 8;
else if(e>=-149 && e < -99)
return 10;
else if(e>=-199 && e < -149)
return 13;
else if(e>=-299 && e < -199)
return 17;
else if(e>=-399 && e < -299)
return 22;
else if(e>=-499 && e < -399)
return 28;
else if (e<=-500)
return 40;
}
float FenetrePrincipale::variationdef(float depart,float pts)
{
int e = depart - pts;
if(e >= 500)
return -29;
else if(e>=400 && e < 500)
return -20;
else if(e>=300 && e < 400)
return -16;
else if(e>=200 && e < 300)
return -12.5;
else if(e>=150 && e < 200)
return -10;
else if(e>=100 && e < 150)
return -8;
else if(e>=50 && e < 100)
return -7;
else if(e>=25 && e < 50)
return -6;
else if(e>=-24 && e < 25)
return -5;
else if(e>=-49 && e < -24)
return -4.5;
else if(e>=-99 && e < -49)
return -4;
else if(e>=-149 && e < -99)
return -3;
else if(e>=-199 && e < -149)
return -2;
else if(e>=-299 && e < -199)
return -1;
else if(e>=-399 && e < -299)
return -0.5;
else if(e>=-499 && e < -399)
return 0;
else if (e<=-500)
return 0;
}