Bonjour, je débute en Qt et voilà plusieurs jours que je bloque malgré mes nombreuses recherches. Je n'arrive simplement pas à utiliser QTimer
J'aimerai que les ennemis sur la map puisse bouger mais le timer ne fonctionne pas.
ennemi1 hérite de ennemi. Je met donc les 2 classes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ennemi.h #ifndef ENNEMI_H #define ENNEMI_H #include "personnage.h" #include <QObject> class Ennemi : public QObject { public: Ennemi(); void analyserDirection(); void deplacer(); void attaquer(Personnage personnage); void subirDegat(int attaque); private: int attaque; int defense; int vitesse; int vie; int direction; }; #endif // ENNEMI_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ennemi.cpp #include "ennemi.h" Ennemi::Ennemi() : QObject() { }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 ennemi1.h #ifndef ENNEMI1_H #define ENNEMI1_H #include "ennemi.h" #include <QPoint> #include <QLabel> #include <QPixmap> #include <QBitmap> #include <QTimer> #include <QMessageBox> #include <QApplication> class Ennemi1 : public Ennemi { Q_OBJECT public: Ennemi1(QPoint positionDepart, QWidget &fenetre); private: QLabel *label; public slots: void updateDeplacement(); }; #endif // ENNEMI1_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 ennemi1.cpp #include "ennemi1.h" #include <iostream> #include <QDebug> Ennemi1::Ennemi1(QPoint positionDepart, QWidget &fenetre) : Ennemi() { QPixmap ennemi("../Graphisme/Ennemis/Ennemi1.png"); QPixmap imgEnnemi = ennemi.copy(QRect(0, 96, 32, 48)); label = new QLabel(&fenetre); label->setGeometry(positionDepart.x(), positionDepart.y(), 32, 48); QBitmap mask = imgEnnemi.createMaskFromColor(QColor(255, 255, 255)); imgEnnemi.setMask (mask); label->setPixmap(imgEnnemi); // Déplacement QTimer *timer = new QTimer(); connect( timer, SIGNAL(timeout()), this, SLOT(updateDeplacement()) ); timer->start( 500 ); } void Ennemi1::updateDeplacement() { qDebug() << "test"; std::cout << "test"; label->setGeometry(label->pos().x()+20, label->pos().y(), 32, 48); }
Je pourrais envoyer le projet au besoin mais il est brouillon.
Merci de votre aide =)
Partager