summaryrefslogtreecommitdiffstats
path: root/pacman-c++/mainwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pacman-c++/mainwidget.cpp')
-rw-r--r--pacman-c++/mainwidget.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp
index 809e786..fe1ba9c 100644
--- a/pacman-c++/mainwidget.cpp
+++ b/pacman-c++/mainwidget.cpp
@@ -25,8 +25,18 @@ Transmission::map_t createDummyMap()
25 map[0][0] |= Color::none ^ Transmission::block; 25 map[0][0] |= Color::none ^ Transmission::block;
26 map[0][1] |= Color::none ^ Transmission::block; 26 map[0][1] |= Color::none ^ Transmission::block;
27 map[0][2] |= Color::none ^ Transmission::block; 27 map[0][2] |= Color::none ^ Transmission::block;
28 map[0][3] |= Color::none ^ Transmission::block;
29 map[0][4] |= Color::none ^ Transmission::block;
30 map[0][5] |= Color::none ^ Transmission::block;
28 map[1][0] |= Color::none ^ Transmission::block; 31 map[1][0] |= Color::none ^ Transmission::block;
29 map[2][0] |= Color::none ^ Transmission::block; 32 map[2][0] |= Color::none ^ Transmission::block;
33 map[1][3] |= Color::none ^ Transmission::block;
34 map[2][3] |= Color::none ^ Transmission::block;
35 map[3][3] |= Color::none ^ Transmission::block;
36 map[2][4] |= Color::none ^ Transmission::block;
37 map[2][5] |= Color::none ^ Transmission::block;
38 map[2][2] |= Color::none ^ Transmission::block;
39 map[2][1] |= Color::none ^ Transmission::block;
30 40
31 map[4][3] |= Color::green ^ Transmission::block; 41 map[4][3] |= Color::green ^ Transmission::block;
32 42
@@ -124,9 +134,24 @@ void MainWidget::updateMap(const Transmission::map_t& map)
124 Color::Color color = static_cast<Color::Color>(cur & Transmission::color_mask); 134 Color::Color color = static_cast<Color::Color>(cur & Transmission::color_mask);
125 qDebug() << "col=" << color; 135 qDebug() << "col=" << color;
126 136
127 PixmapItem *item = 0; 137 PixmapItem *item = NULL;
128 if (cur & Transmission::block) 138 if (cur & Transmission::block)
129 item = new Block(color); 139 {
140 unsigned int neighbours = Block::None;
141 // check left side
142 if (x > 0 && map[x - 1][y] & Transmission::block)
143 neighbours |= Block::Left;
144 // check right side
145 if (x < Constants::map_size.width && map[x + 1][y] & Transmission::block)
146 neighbours |= Block::Right;
147 // check upside
148 if (y > 0 && map[x][y - 1] & Transmission::block)
149 neighbours |= Block::Up;
150 // check down side
151 if (y < Constants::map_size.height && map[x][y + 1] & Transmission::block)
152 neighbours |= Block::Down;
153 item = new Block(color, neighbours);
154 }
130 else if (cur & Transmission::bonuspoint) 155 else if (cur & Transmission::bonuspoint)
131 item = new BonusPoint(); 156 item = new BonusPoint();
132 else if (cur & Transmission::pacman) 157 else if (cur & Transmission::pacman)
@@ -166,7 +191,7 @@ void MainWidget::updateMap(const Transmission::map_t& map)
166 else 191 else
167 Q_ASSERT(false); 192 Q_ASSERT(false);
168 193
169 if(item != 0) 194 if (item != NULL)
170 { 195 {
171 m_scene->addItem(item); 196 m_scene->addItem(item);
172 item->setPos(mapPositionToCoord(x, y)); 197 item->setPos(mapPositionToCoord(x, y));