From dce91729ff119ce6e00340f67297ca9e3e72110c Mon Sep 17 00:00:00 2001 From: totycro Date: Wed, 6 Apr 2011 15:07:01 +0200 Subject: Cleaned up constants --- pacman-c++/actor.cpp | 8 +-- pacman-c++/bonuspoint.cpp | 2 +- pacman-c++/constants.h | 21 +++++--- pacman-c++/mainwidget.cpp | 134 ++++++++++++++++++++++++---------------------- pacman-c++/mainwidget.h | 10 ++-- 5 files changed, 94 insertions(+), 81 deletions(-) diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index 3794b63..cfd832c 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -22,7 +22,7 @@ Actor::Actor(Color::Color color, QGraphicsItem *parent) /* setup icon for player */ m_icon.setPixmap(m_pix); - m_icon.setSprite(SPRITE_MARGIN, SPRITE_MARGIN, SPRITE_WIDTH, SPRITE_HEIGHT); + m_icon.setSprite(Constants::sprite_margin, Constants::sprite_margin, Constants::field_size.width, Constants::field_size.height); m_direction = Actor::Left; @@ -35,9 +35,9 @@ Actor::Actor(Color::Color color, QGraphicsItem *parent) for (int i = 0; i < 4; i++) { PixmapItem *img = new PixmapItem(m_pix, this); - int x = i * 20 + SPRITE_MARGIN; - int y = m_direction * 20 + SPRITE_MARGIN; - img->setSprite(x, y, SPRITE_WIDTH, SPRITE_HEIGHT); + int x = i * 20 + Constants::sprite_margin; + int y = m_direction * 20 + Constants::sprite_margin; + img->setSprite(x, y, Constants::field_size.width, Constants::field_size.height); img->setZValue(zValue()); img->setVisible(false); img->setPos(QPointF(200, 0)); diff --git a/pacman-c++/bonuspoint.cpp b/pacman-c++/bonuspoint.cpp index 8ebc195..0517c64 100644 --- a/pacman-c++/bonuspoint.cpp +++ b/pacman-c++/bonuspoint.cpp @@ -17,5 +17,5 @@ BonusPoint::BonusPoint(QGraphicsItem *parent) setPixmap(*pixmap); int rand = (int) (BONUSPOINTS_NUM_SPRITES * (qrand() / (RAND_MAX + 1.0))); - setSprite(rand * 20 + SPRITE_MARGIN, SPRITE_MARGIN, SPRITE_WIDTH, SPRITE_HEIGHT); + setSprite(rand * 20 + Constants::sprite_margin, Constants::sprite_margin, Constants::field_size.width, Constants::field_size.height); } diff --git a/pacman-c++/constants.h b/pacman-c++/constants.h index 15d3022..34f29d0 100644 --- a/pacman-c++/constants.h +++ b/pacman-c++/constants.h @@ -1,12 +1,17 @@ #ifndef CONSTANTS_H #define CONSTANTS_H -#define SPRITE_MARGIN 2 -#define SPRITE_WIDTH 16 -#define SPRITE_HEIGHT 16 +namespace Constants { -const unsigned int map_size[2] = { 20, 20 }; -const unsigned int field_size[2] = { 16, 16 }; + const struct { + const unsigned int width, height; + } field_size = { 16, 16 }, + map_size = { 20, 20 }, + map_size_pixel = { field_size.width * map_size.width, + field_size.height * map_size.height}; + + const unsigned int sprite_margin = 2; +} namespace Color { @@ -18,13 +23,13 @@ namespace Color green = (1 << 2), }; } - + // constants for data transmission to client -namespace transmission +namespace Transmission { typedef unsigned int field_t; typedef unsigned int mask_t; - + const field_t block = (1 << 3); const field_t bonuspoint = (1 << 4); const field_t pacman = (1 << 5); diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp index e9b4cc3..809e786 100644 --- a/pacman-c++/mainwidget.cpp +++ b/pacman-c++/mainwidget.cpp @@ -5,8 +5,52 @@ #include "bonuspoint.h" #include "constants.h" +// temporary +Transmission::map_t createDummyMap() +{ + Transmission::map_t map; + map = new Transmission::field_t*[Constants::map_size.width]; + for (unsigned int i = 0; i < Constants::map_size.width; ++i) + map[i] = new Transmission::field_t[Constants::map_size.height]; + + for (unsigned int x = 0; x < Constants::map_size.width; ++x) + { + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { + Transmission::field_t &cur = map[x][y]; + cur = 0; + } + } + + map[0][0] |= Color::none ^ Transmission::block; + map[0][1] |= Color::none ^ Transmission::block; + map[0][2] |= Color::none ^ Transmission::block; + map[1][0] |= Color::none ^ Transmission::block; + map[2][0] |= Color::none ^ Transmission::block; + + map[4][3] |= Color::green ^ Transmission::block; + + map[5][3] |= Color::none ^ Transmission::block; + map[6][3] |= Color::none ^ Transmission::block; + map[7][3] |= Color::red ^ Transmission::block; + + map[7][5] |= Transmission::bonuspoint; + + map[5][5] |= Color::blue; + map[5][5] |= Transmission::pacman; + map[5][5] |= Transmission::direction_left; + + return map; +} + MainWidget::MainWidget() : currentKey(0) +{ + createGui(); + updateMap(createDummyMap()); +} + +void MainWidget::createGui() { setFocusPolicy(Qt::StrongFocus); @@ -30,24 +74,23 @@ MainWidget::MainWidget() m_playerScoreLayouts.append(playerLayout); } - m_scene = new QGraphicsScene(0, 0, 500, 500, this); + m_scene = new QGraphicsScene(0, 0, Constants::map_size_pixel.width, Constants::map_size_pixel.height, this); m_scene->setBackgroundBrush(Qt::black); QGraphicsView *window = new QGraphicsView(m_scene, this); window->setFrameStyle(0); window->setAlignment(Qt::AlignLeft | Qt::AlignTop); - window->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - window->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + //window->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + //window->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); layout->addLayout(m_scoreLayout); layout->addWidget(window); setLayout(layout); setWindowTitle("pacman client"); - - loadDummyMap(); } + void MainWidget::updateScore() { QMapIterator i(m_actors); @@ -66,66 +109,27 @@ void MainWidget::updateScore() } } -// temporary -transmission::map_t createDummyMap() -{ - transmission::map_t map; - map = new transmission::field_t*[map_size[0]]; - for (unsigned int i = 0; i < map_size[0]; ++i) - map[i] = new transmission::field_t[map_size[1]]; - - for (unsigned int x = 0; x < map_size[0]; ++x) - { - for (unsigned int y = 0; y < map_size[1]; ++y) - { - transmission::field_t &cur = map[x][y]; - cur = 0; - } - } - - map[0][0] |= Color::none ^ transmission::block; - map[0][1] |= Color::none ^ transmission::block; - map[0][2] |= Color::none ^ transmission::block; - map[1][0] |= Color::none ^ transmission::block; - map[2][0] |= Color::none ^ transmission::block; - - map[4][3] |= Color::green ^ transmission::block; - - map[5][3] |= Color::none ^ transmission::block; - map[6][3] |= Color::none ^ transmission::block; - map[7][3] |= Color::red ^ transmission::block; - - map[7][5] |= transmission::bonuspoint; - - map[5][5] |= Color::blue; - map[5][5] |= transmission::pacman; - map[5][5] |= transmission::direction_left; - - return map; -} -void MainWidget::loadDummyMap() +void MainWidget::updateMap(const Transmission::map_t& map) { - transmission::map_t map = createDummyMap(); - - for (unsigned int x = 0; x < map_size[0]; ++x) + for (unsigned int x = 0; x < Constants::map_size.width; ++x) { - for (unsigned int y = 0; y < map_size[1]; ++y) + for (unsigned int y = 0; y < Constants::map_size.height; ++y) { - const transmission::field_t &cur = map[x][y]; + const Transmission::field_t &cur = map[x][y]; if (cur == 0) continue; qDebug() << "not 0 at x=" << x << ", y=" << y << ", val=" << cur; - Color::Color color = static_cast(cur & transmission::color_mask); + Color::Color color = static_cast(cur & Transmission::color_mask); qDebug() << "col=" << color; PixmapItem *item = 0; - if (cur & transmission::block) + if (cur & Transmission::block) item = new Block(color); - else if (cur & transmission::bonuspoint) + else if (cur & Transmission::bonuspoint) item = new BonusPoint(); - else if (cur & transmission::pacman) + else if (cur & Transmission::pacman) { Actor *actor = m_actors.value(color, 0); if (actor == 0) { // 0 entspricht NULL ;) @@ -137,21 +141,21 @@ void MainWidget::loadDummyMap() } Actor::Movement direction; - switch (cur & transmission::direction_mask) + switch (cur & Transmission::direction_mask) { - case transmission::direction_none: + case Transmission::direction_none: direction = Actor::None; break; - case transmission::direction_left: + case Transmission::direction_left: direction = Actor::Left; break; - case transmission::direction_right: + case Transmission::direction_right: direction = Actor::Right; break; - case transmission::direction_up: + case Transmission::direction_up: direction = Actor::Up; break; - case transmission::direction_down: + case Transmission::direction_down: direction = Actor::Down; break; default: @@ -174,23 +178,23 @@ void MainWidget::loadDummyMap() QPoint MainWidget::mapPositionToCoord(unsigned int x, unsigned int y) { - return QPoint(x * field_size[0], y * field_size[1]); + return QPoint(x * Constants::field_size.width, y * Constants::field_size.height); } -transmission::field_t MainWidget::translateKey(int key) +Transmission::field_t MainWidget::translateKey(int key) { switch(key) { case Qt::Key_Up: - return transmission::direction_up; + return Transmission::direction_up; break; case Qt::Key_Down: - return transmission::direction_down; + return Transmission::direction_down; break; case Qt::Key_Left: - return transmission::direction_left; + return Transmission::direction_left; break; case Qt::Key_Right: - return transmission::direction_right; + return Transmission::direction_right; break; default: return 0; @@ -206,7 +210,7 @@ void MainWidget::keyPressEvent(QKeyEvent* event) void MainWidget::keyReleaseEvent(QKeyEvent* event) { QWidget::keyReleaseEvent(event); - transmission::field_t releasedKey = translateKey(event->key()); + Transmission::field_t releasedKey = translateKey(event->key()); if (releasedKey == currentKey) { // current key got released // if this is false, a key got released which has already diff --git a/pacman-c++/mainwidget.h b/pacman-c++/mainwidget.h index 0a97116..0056669 100644 --- a/pacman-c++/mainwidget.h +++ b/pacman-c++/mainwidget.h @@ -21,10 +21,14 @@ protected: virtual void keyReleaseEvent(QKeyEvent* ); private: - void loadDummyMap(); + void createGui(); + + void updateMap(const Transmission::map_t& map); void updateScore(); + Transmission::map_t currentMap; + // data conversion QPoint mapPositionToCoord(unsigned int x, unsigned int y); @@ -36,10 +40,10 @@ private: QMap m_actors; // key currently pressed by user - transmission::field_t currentKey; + Transmission::field_t currentKey; // translate Qt::Key to our key format - transmission::field_t translateKey(int); + Transmission::field_t translateKey(int); }; #endif // MAINWIDGET_H -- cgit v1.2.3