Skip to content

Commit

Permalink
Update timer.cpp
Browse files Browse the repository at this point in the history
Several added features
  • Loading branch information
pagrumiaux committed Jun 11, 2015
1 parent df02843 commit 0d4c7dd
Showing 1 changed file with 68 additions and 20 deletions.
88 changes: 68 additions & 20 deletions timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <QPainter>
#include <QTimerEvent>
#include <QKeyEvent>
#include <QPushButton>

#include <QAudio>

Expand All @@ -14,15 +15,21 @@ Timer::Timer(QWidget *parent)
{
step = 50; //coordonnées en x du départ du curseur
pt = 0; //variable qui parcourt le tableau de note, de 0 à 3
vue = false;
c_parti = false;

vitesse = 6;

/*tableau des temps de notes à jouer*/
tps_a_jouer[0] = 300;
tps_a_jouer[1] = 900;
tps_a_jouer[2] = 1500;
tps_a_jouer[3] = 2100;
tps_a_jouer[0] = 50*vitesse;
tps_a_jouer[1] = 50*vitesse*3;
tps_a_jouer[2] = 50*vitesse*5;
tps_a_jouer[3] = 50*vitesse*7;

//timer.start(vitesse, this); //envoie un event tous les 6 ms
//time.start(); //départ du chrono

timer.start(6, this); //envoie un event tous les 6 ms
time.start(); //départ du chrono
//connect(go, SIGNAL(clicked()), timer.start(6, this));
}

void Timer::paintEvent(QPaintEvent * /* event */)
Expand All @@ -46,9 +53,9 @@ void Timer::paintEvent(QPaintEvent * /* event */)
painter.drawLine(50, 185, 50, 215); // barre début mesure
painter.drawLine(450, 185, 450, 215); // barre fin mesure
painter.setPen(QPen(Qt::black, 1));
painter.drawLine(150, 50, 150, 70);// barre de mesure
painter.drawLine(250, 50, 250, 70);// barre de mesure
painter.drawLine(350, 50, 350, 70);// barre de mesure
painter.drawLine(150, 190, 150, 210);// barre de mesure
painter.drawLine(250, 190, 250, 210);// barre de mesure
painter.drawLine(350, 190, 350, 210);// barre de mesure

/*Dessin des 4 noires*/
painter.setPen(QPen(Qt::black, 10));
Expand All @@ -57,12 +64,27 @@ void Timer::paintEvent(QPaintEvent * /* event */)
painter.drawPoint(300,60);
painter.drawPoint(400,60);

/*Dessin des 4 noires sur la mesure d'essai*/
if(vue)
{
painter.setPen(QPen(Qt::black, 10));
painter.drawPoint(100,200);
painter.drawPoint(200,200);
painter.drawPoint(300,200);
painter.drawPoint(400,200);
}

/*barre défilante*/
painter.setPen(QPen(Qt::black, 3));
painter.drawLine(step, 40, step, 80);
if(c_parti)
{
painter.setPen(QPen(Qt::black, 3));
painter.drawLine(step, 40, step, 80); //mesure à jouer
painter.drawLine(step, 180, step, 220); //mesure d'essais
}

if(step > 450) // si la barre arrive à la fin, on revient au début
{
pt = 0;
step = 50;
time.restart();
}
Expand All @@ -76,7 +98,7 @@ void Timer::paintEvent(QPaintEvent * /* event */)
if(b[i])
painter.setPen(QPen(QColor(0, 100, 0), 10));
if(!b[i])
painter.setPen(QPen(QColor(100, 0, 0), 10));
painter.setPen(QPen(QColor(200, 0, 0), 10));

painter.drawPoint(t[i].rx(),t[i].ry());
}
Expand All @@ -101,23 +123,49 @@ void Timer::keyPressEvent(QKeyEvent *event) //event envoyé quand une touche est
if (pt > 3)
pt = 0;

//inutile, c'était pour des tests
qDebug("Time elapsed: %d ms", time.elapsed());
qDebug("Temps à taper: %d ms", tps_a_jouer[pt]);
int temps_tape = time.elapsed();

if (event->key() == Qt::Key_Space) // mais on veut que la touche espace
{
// on écrit dans b[] si ce qu'on joue est bon ou pas
if (abs(time.elapsed() - tps_a_jouer[pt]) < 20)
int k = 0;
bool ok = false; // si la note jouée correspond ou non à une des notes à jouer
for(k = 0; k < 4; k++) // on compare ce qu'on a joué à toutes les notes
{
b[pt] = true;
}
else
b[pt] = false;
qDebug("Time elapsed: %d ms", temps_tape);
qDebug("Temps à taper: %d ms", tps_a_jouer[k]);

if (abs(temps_tape - tps_a_jouer[k]) < 20)
{
b[pt] = true;
ok = true; // ça correspond bien
}
}

if(!ok)
b[pt]=false;

t[pt] = QPointF(step,200);
update(); //idem, update du widget

++pt;
}
if(event->key() == Qt::Key_Alt)
{
if(!c_parti)
{
timer.start(vitesse, this);
time.start();
c_parti = true;
}
else
{
timer.stop();
c_parti = false;
pt = 0;
step = 50;
}

}

}

0 comments on commit 0d4c7dd

Please sign in to comment.