From da6ef5d87e1cafc0a7de658dc65a9a4578e28f6c Mon Sep 17 00:00:00 2001 From: manuel Date: Wed, 6 Apr 2011 23:29:31 +0200 Subject: - make a few optimizations to actor sprites - make actor move via keyboard! --- pacman-c++/mainwidget.cpp | 97 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 31 deletions(-) (limited to 'pacman-c++/mainwidget.cpp') diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index 343fe4c..399d13c 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp @@ -179,21 +179,21 @@ Transmission::map_t createDummyMap() map[15][15] |= Color::red; map[15][15] |= Transmission::pacman; - map[15][15] |= Transmission::direction_left; + map[15][15] |= Transmission::direction_right; - map[16][15] |= Color::blue; + /*map[16][15] |= Color::blue; map[16][15] |= Transmission::pacman; - map[16][15] |= Transmission::direction_left; + map[16][15] |= Transmission::direction_up; map[17][15] |= Color::green; map[17][15] |= Transmission::pacman; - map[17][15] |= Transmission::direction_left; + map[17][15] |= Transmission::direction_left;*/ return map; } MainWidget::MainWidget() - : currentKey(0) + : m_currentKey(0) { visualMap.resize(Constants::map_size.width); for (int i=0; isetHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //window->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); window->setFixedSize(Constants::map_size_pixel.width, Constants::map_size_pixel.height); + window->setWindowFlags(window->windowFlags() & ~Qt::WindowMaximizeButtonHint); layout->addLayout(m_scoreLayout); layout->addWidget(window); @@ -251,19 +252,19 @@ void MainWidget::updateScore() while (i.hasNext()) { i.next(); - int id = (i.key() >> 1); - if (id > (Color::max >> 1)) + if (i.key() > Color::max) { /* player #4 isn't supported in score */ Q_ASSERT(false); continue; } + int id = (i.key() >> 1); QLabel *turnPointsLbl = dynamic_cast(m_playerScoreLayouts.at(id)->itemAtPosition(0,1)->widget()); QLabel *allPointsLbl = dynamic_cast(m_playerScoreLayouts.at(id)->itemAtPosition(1,1)->widget()); - turnPointsLbl->setText(QString::number(id * 100 * qrand())); - allPointsLbl->setText(QString::number(id * 200 * qrand())); + turnPointsLbl->setText(QString::number(id)); + allPointsLbl->setText(QString::number(id)); } } @@ -303,8 +304,9 @@ void MainWidget::updateMap(const Transmission::map_t& map) item = new BonusPoint(); else if (cur & Transmission::pacman) { - Actor *actor = m_actors.value(color, 0); - if (actor == 0) { // 0 entspricht NULL ;) + Actor *actor = m_actors.value(color, NULL); + if (actor == NULL) + { //qDebug() << "new actor of col" << color; actor = new Actor(color); m_actors[color] = actor; @@ -312,7 +314,7 @@ void MainWidget::updateMap(const Transmission::map_t& map) actor->setPos(mapPositionToCoord(x, y)); } - Actor::Movement direction; + Actor::Movement direction = Actor::None; switch (cur & Transmission::direction_mask) { case Transmission::direction_none: @@ -333,7 +335,7 @@ void MainWidget::updateMap(const Transmission::map_t& map) default: Q_ASSERT(false); } - //actor->move(direction, mapPositionToCoord(x, y); + //actor->move(direction, mapPositionToCoord(x, y)); } else Q_ASSERT(false); @@ -363,38 +365,71 @@ QPoint MainWidget::mapPositionToCoord(unsigned int x, unsigned int y) Transmission::field_t MainWidget::translateKey(int key) { - switch(key) { - case Qt::Key_Up: - return Transmission::direction_up; - break; - case Qt::Key_Down: - return Transmission::direction_down; - break; - case Qt::Key_Left: - return Transmission::direction_left; - break; - case Qt::Key_Right: - return Transmission::direction_right; - break; - default: - return 0; + switch(key) + { + case Qt::Key_W: + case Qt::Key_Up: + return Transmission::direction_up; + break; + case Qt::Key_S: + case Qt::Key_Down: + return Transmission::direction_down; + break; + case Qt::Key_A: + case Qt::Key_Left: + return Transmission::direction_left; + break; + case Qt::Key_D: + case Qt::Key_Right: + return Transmission::direction_right; + break; + default: + return 0; } } void MainWidget::keyPressEvent(QKeyEvent* event) { QWidget::keyPressEvent(event); - currentKey = translateKey( event->key() ); + m_currentKey = translateKey(event->key()); + + // test stuff + Actor::Movement mov = Actor::None; + switch(m_currentKey) + { + case Transmission::direction_up: + mov = Actor::Up; + break; + case Transmission::direction_down: + mov = Actor::Down; + break; + case Transmission::direction_left: + mov = Actor::Left; + break; + case Transmission::direction_right: + mov = Actor::Right; + break; + default: + break; + } + + QMapIterator i(m_actors); + while (i.hasNext()) + { + i.next(); + i.value()->move(mov); + } } void MainWidget::keyReleaseEvent(QKeyEvent* event) { QWidget::keyReleaseEvent(event); Transmission::field_t releasedKey = translateKey(event->key()); - if (releasedKey == currentKey) { + if (releasedKey == m_currentKey) + { // current key got released // if this is false, a key got released which has already // been replaced by a different key, so this case is disregarded - currentKey = 0; + m_currentKey = Transmission::direction_none; } } -- cgit v1.2.3