From 606d2a2a3d53930b10c2057f96165f8cd4e6f165 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 4 Apr 2011 12:26:35 +0200 Subject: make the pacman move! --- pacman-c++/actor.cpp | 40 +++++++++++++++++++++++++--------------- pacman-c++/main.cpp | 6 +++--- pacman-c++/pixmapitem.cpp | 15 +-------------- pacman-c++/pixmapitem.h | 7 ------- 4 files changed, 29 insertions(+), 39 deletions(-) diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index 5080497..e98545b 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -2,7 +2,9 @@ #include "animationmanager.h" #include #include +#include #include +#include #define SPRITE_MARGIN 2 #define SPRITE_PLAYER_WIDTH 16 @@ -18,33 +20,41 @@ Actor::Actor(Type type) { m_pix = ":/" + QString("actor%1").arg(type); setPixmap(m_pix); - setSprite(82, 82, 16, 16); + setSprite(82, 82, SPRITE_PLAYER_WIDTH, SPRITE_PLAYER_HEIGHT); m_direction = Actor::Left; qRegisterAnimationInterpolator(myBooleanInterpolator); - QSequentialAnimationGroup *group = new QSequentialAnimationGroup(this); - group->setLoopCount(-1); + + QSequentialAnimationGroup *eating = new QSequentialAnimationGroup(this); + QParallelAnimationGroup *moving = new QParallelAnimationGroup(this); + eating->setLoopCount(-1); + for (int i = 0; i < 4; i++) { - PixmapItem *step = new PixmapItem(m_pix, this); + PixmapItem *img = new PixmapItem(m_pix, this); int x = i * 20 + SPRITE_MARGIN; int y = m_direction * 20 + SPRITE_MARGIN; - step->setSprite(x, y, SPRITE_PLAYER_WIDTH, SPRITE_PLAYER_HEIGHT); - step->setVisible(false); + img->setSprite(x, y, SPRITE_PLAYER_WIDTH, SPRITE_PLAYER_HEIGHT); + img->setVisible(false); + img->setPos(QPointF(200, 0)); + QPropertyAnimation *fadein = new QPropertyAnimation(img, "visible", eating); + fadein->setDuration(0); + fadein->setEndValue(true); - QPropertyAnimation *anim = new QPropertyAnimation(step, "visible", group); - anim->setDuration(0); - anim->setEndValue(true); + eating->addPause(100); - group->addPause(100); + QPropertyAnimation *fadeout = new QPropertyAnimation(img, "visible", eating); + fadeout->setDuration(0); + fadeout->setEndValue(false); - QPropertyAnimation *anim2 = new QPropertyAnimation(step, "visible", group); - anim2->setDuration(0); - anim2->setEndValue(false); + QPropertyAnimation *move = new QPropertyAnimation(img, "pos", moving); + move->setDuration(10000); + move->setEndValue(QPointF(0, 0)); } - AnimationManager::self()->registerAnimation(group); - group->start(); + AnimationManager::self()->registerAnimation(eating); + eating->start(); + moving->start(); } diff --git a/pacman-c++/main.cpp b/pacman-c++/main.cpp index 4b88b44..3311429 100644 --- a/pacman-c++/main.cpp +++ b/pacman-c++/main.cpp @@ -7,12 +7,12 @@ int main(int argc, char **argv) { QApplication app(argc, argv); - QGraphicsScene scene(0, 0, 300, 300); + QGraphicsScene scene(0, 0, 500, 500); scene.setBackgroundBrush(Qt::black); Actor *actor1 = new Actor(Actor::Player1); scene.addItem(actor1); - actor1->setPos(100,100); + actor1->setPos(100, 100); QGraphicsView window(&scene); window.setFrameStyle(0); @@ -22,7 +22,7 @@ int main(int argc, char **argv) QMainWindow mainWin; mainWin.setCentralWidget(&window); - mainWin.resize(300, 300); + mainWin.resize(500, 500); mainWin.show(); qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); diff --git a/pacman-c++/pixmapitem.cpp b/pacman-c++/pixmapitem.cpp index a977a9e..b0a81d0 100644 --- a/pacman-c++/pixmapitem.cpp +++ b/pacman-c++/pixmapitem.cpp @@ -66,19 +66,6 @@ QRectF PixmapItem::boundingRect() const void PixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { - painter->drawPixmap(0, 0, m_pix, m_x, m_y, m_width, m_height); + painter->drawPixmap(QPoint(0, 0), m_pix, QRect(m_x, m_y, m_width, m_height)); } -#if 0 -bool PixmapItem::isVisible() const -{ - qDebug() << "isVisible()"; - return true; -} - -void PixmapItem::setVisible(bool v) -{ - qDebug() << "setVisible(" << v << ")"; -} -#endif - diff --git a/pacman-c++/pixmapitem.h b/pacman-c++/pixmapitem.h index e6aa79e..8e7d4f0 100644 --- a/pacman-c++/pixmapitem.h +++ b/pacman-c++/pixmapitem.h @@ -7,8 +7,6 @@ class PixmapItem : public QGraphicsObject { - Q_PROPERTY(bool visibleX READ isVisible WRITE setVisible) - public: PixmapItem(QGraphicsItem *parent = 0); PixmapItem(const QString &fileName, QGraphicsItem *parent = 0); @@ -21,11 +19,6 @@ public: QRectF boundingRect() const; void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); -#if 0 - bool isVisible() const; - void setVisible(bool v); -#endif - private: QPixmap m_pix; int m_x, m_y; -- cgit v1.2.3