summaryrefslogtreecommitdiffstats
path: root/pacman-c++
diff options
context:
space:
mode:
Diffstat (limited to 'pacman-c++')
-rw-r--r--pacman-c++/actor.cpp4
-rw-r--r--pacman-c++/block.cpp8
-rw-r--r--pacman-c++/block.h5
-rw-r--r--pacman-c++/constants.h3
-rw-r--r--pacman-c++/mainwidget.cpp31
-rw-r--r--pacman-c++/pacman.qrc1
-rw-r--r--pacman-c++/pics/block0.pngbin181 -> 479 bytes
-rw-r--r--pacman-c++/pics/block1.pngbin179 -> 453 bytes
-rw-r--r--pacman-c++/pics/block2.pngbin195 -> 476 bytes
-rw-r--r--pacman-c++/pics/block4.pngbin180 -> 452 bytes
-rw-r--r--pacman-c++/pics/block8.pngbin0 -> 471 bytes
11 files changed, 43 insertions, 9 deletions
diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp
index 3794b63..4a132f9 100644
--- a/pacman-c++/actor.cpp
+++ b/pacman-c++/actor.cpp
@@ -35,8 +35,8 @@ Actor::Actor(Color::Color color, QGraphicsItem *parent)
35 for (int i = 0; i < 4; i++) 35 for (int i = 0; i < 4; i++)
36 { 36 {
37 PixmapItem *img = new PixmapItem(m_pix, this); 37 PixmapItem *img = new PixmapItem(m_pix, this);
38 int x = i * 20 + SPRITE_MARGIN; 38 int x = i * SPRITE_OFFSET + SPRITE_MARGIN;
39 int y = m_direction * 20 + SPRITE_MARGIN; 39 int y = m_direction * SPRITE_OFFSET + SPRITE_MARGIN;
40 img->setSprite(x, y, SPRITE_WIDTH, SPRITE_HEIGHT); 40 img->setSprite(x, y, SPRITE_WIDTH, SPRITE_HEIGHT);
41 img->setZValue(zValue()); 41 img->setZValue(zValue());
42 img->setVisible(false); 42 img->setVisible(false);
diff --git a/pacman-c++/block.cpp b/pacman-c++/block.cpp
index ccb7ade..9e5e427 100644
--- a/pacman-c++/block.cpp
+++ b/pacman-c++/block.cpp
@@ -4,7 +4,7 @@
4 4
5QMap<Color::Color, QPixmap> Block::m_pixmaps; 5QMap<Color::Color, QPixmap> Block::m_pixmaps;
6 6
7Block::Block(Color::Color color, Neighbour neighbour, QGraphicsItem *parent) 7Block::Block(Color::Color color, unsigned int neighbours, QGraphicsItem *parent)
8 : PixmapItem(parent) 8 : PixmapItem(parent)
9{ 9{
10 if (m_pixmaps.find(color) == m_pixmaps.end()) 10 if (m_pixmaps.find(color) == m_pixmaps.end())
@@ -13,5 +13,11 @@ Block::Block(Color::Color color, Neighbour neighbour, QGraphicsItem *parent)
13 m_pixmaps[color] = QPixmap(pixmapName); 13 m_pixmaps[color] = QPixmap(pixmapName);
14 } 14 }
15 setPixmap(m_pixmaps.find(color).value()); 15 setPixmap(m_pixmaps.find(color).value());
16 setNeighbours(neighbours);
16 qDebug() << "loading block w color: " << color; 17 qDebug() << "loading block w color: " << color;
17} 18}
19
20void Block::setNeighbours(unsigned int neighbours)
21{
22 setSprite(neighbours * SPRITE_OFFSET, 0, SPRITE_WIDTH, SPRITE_HEIGHT);
23}
diff --git a/pacman-c++/block.h b/pacman-c++/block.h
index 40bde51..29ddd23 100644
--- a/pacman-c++/block.h
+++ b/pacman-c++/block.h
@@ -8,6 +8,7 @@
8class Block 8class Block
9 : public PixmapItem 9 : public PixmapItem
10{ 10{
11public:
11 enum Neighbour { 12 enum Neighbour {
12 None = 0, 13 None = 0,
13 Left = (1 << 0), 14 Left = (1 << 0),
@@ -16,8 +17,8 @@ class Block
16 Down = (1 << 3) 17 Down = (1 << 3)
17 }; 18 };
18 19
19public: 20 Block(Color::Color color, unsigned int neighbours = None, QGraphicsItem *parent = 0);
20 Block(Color::Color color, Neighbour neighbour = None, QGraphicsItem *parent = 0); 21 void setNeighbours(unsigned int neighbours);
21 22
22private: 23private:
23 // map for saving QPixmaps for reuse 24 // map for saving QPixmaps for reuse
diff --git a/pacman-c++/constants.h b/pacman-c++/constants.h
index 15d3022..33f235a 100644
--- a/pacman-c++/constants.h
+++ b/pacman-c++/constants.h
@@ -2,8 +2,9 @@
2#define CONSTANTS_H 2#define CONSTANTS_H
3 3
4#define SPRITE_MARGIN 2 4#define SPRITE_MARGIN 2
5#define SPRITE_WIDTH 16 5#define SPRITE_WIDTH 16
6#define SPRITE_HEIGHT 16 6#define SPRITE_HEIGHT 16
7#define SPRITE_OFFSET 20
7 8
8const unsigned int map_size[2] = { 20, 20 }; 9const unsigned int map_size[2] = { 20, 20 };
9const unsigned int field_size[2] = { 16, 16 }; 10const unsigned int field_size[2] = { 16, 16 };
diff --git a/pacman-c++/mainwidget.cpp b/pacman-c++/mainwidget.cpp
index e9b4cc3..062fc6d 100644
--- a/pacman-c++/mainwidget.cpp
+++ b/pacman-c++/mainwidget.cpp
@@ -86,8 +86,18 @@ transmission::map_t createDummyMap()
86 map[0][0] |= Color::none ^ transmission::block; 86 map[0][0] |= Color::none ^ transmission::block;
87 map[0][1] |= Color::none ^ transmission::block; 87 map[0][1] |= Color::none ^ transmission::block;
88 map[0][2] |= Color::none ^ transmission::block; 88 map[0][2] |= Color::none ^ transmission::block;
89 map[0][3] |= Color::none ^ transmission::block;
90 map[0][4] |= Color::none ^ transmission::block;
91 map[0][5] |= Color::none ^ transmission::block;
89 map[1][0] |= Color::none ^ transmission::block; 92 map[1][0] |= Color::none ^ transmission::block;
90 map[2][0] |= Color::none ^ transmission::block; 93 map[2][0] |= Color::none ^ transmission::block;
94 map[1][3] |= Color::none ^ transmission::block;
95 map[2][3] |= Color::none ^ transmission::block;
96 map[3][3] |= Color::none ^ transmission::block;
97 map[2][4] |= Color::none ^ transmission::block;
98 map[2][5] |= Color::none ^ transmission::block;
99 map[2][2] |= Color::none ^ transmission::block;
100 map[2][1] |= Color::none ^ transmission::block;
91 101
92 map[4][3] |= Color::green ^ transmission::block; 102 map[4][3] |= Color::green ^ transmission::block;
93 103
@@ -120,9 +130,24 @@ void MainWidget::loadDummyMap()
120 Color::Color color = static_cast<Color::Color>(cur & transmission::color_mask); 130 Color::Color color = static_cast<Color::Color>(cur & transmission::color_mask);
121 qDebug() << "col=" << color; 131 qDebug() << "col=" << color;
122 132
123 PixmapItem *item = 0; 133 PixmapItem *item = NULL;
124 if (cur & transmission::block) 134 if (cur & transmission::block)
125 item = new Block(color); 135 {
136 unsigned int neighbours = Block::None;
137 // check left side
138 if (x > 0 && map[x - 1][y] & transmission::block)
139 neighbours |= Block::Left;
140 // check right side
141 if (x < map_size[0] && map[x + 1][y] & transmission::block)
142 neighbours |= Block::Right;
143 // check upside
144 if (y > 0 && map[x][y - 1] & transmission::block)
145 neighbours |= Block::Up;
146 // check down side
147 if (y < map_size[1] && map[x][y + 1] & transmission::block)
148 neighbours |= Block::Down;
149 item = new Block(color, neighbours);
150 }
126 else if (cur & transmission::bonuspoint) 151 else if (cur & transmission::bonuspoint)
127 item = new BonusPoint(); 152 item = new BonusPoint();
128 else if (cur & transmission::pacman) 153 else if (cur & transmission::pacman)
@@ -162,7 +187,7 @@ void MainWidget::loadDummyMap()
162 else 187 else
163 Q_ASSERT(false); 188 Q_ASSERT(false);
164 189
165 if(item != 0) 190 if (item != NULL)
166 { 191 {
167 m_scene->addItem(item); 192 m_scene->addItem(item);
168 item->setPos(mapPositionToCoord(x, y)); 193 item->setPos(mapPositionToCoord(x, y));
diff --git a/pacman-c++/pacman.qrc b/pacman-c++/pacman.qrc
index feb4276..e3aab92 100644
--- a/pacman-c++/pacman.qrc
+++ b/pacman-c++/pacman.qrc
@@ -10,5 +10,6 @@
10 <file alias="block4">pics/block4.png</file> 10 <file alias="block4">pics/block4.png</file>
11 <file alias="bonuspoints">pics/bonuspoints.png</file> 11 <file alias="bonuspoints">pics/bonuspoints.png</file>
12 <file alias="points">pics/points.png</file> 12 <file alias="points">pics/points.png</file>
13 <file alias="block8">pics/block8.png</file>
13 </qresource> 14 </qresource>
14</RCC> 15</RCC>
diff --git a/pacman-c++/pics/block0.png b/pacman-c++/pics/block0.png
index 7f93087..76bc4b7 100644
--- a/pacman-c++/pics/block0.png
+++ b/pacman-c++/pics/block0.png
Binary files differ
diff --git a/pacman-c++/pics/block1.png b/pacman-c++/pics/block1.png
index 4188bcf..99e8633 100644
--- a/pacman-c++/pics/block1.png
+++ b/pacman-c++/pics/block1.png
Binary files differ
diff --git a/pacman-c++/pics/block2.png b/pacman-c++/pics/block2.png
index cf1a043..963207e 100644
--- a/pacman-c++/pics/block2.png
+++ b/pacman-c++/pics/block2.png
Binary files differ
diff --git a/pacman-c++/pics/block4.png b/pacman-c++/pics/block4.png
index 13eb22d..6662de4 100644
--- a/pacman-c++/pics/block4.png
+++ b/pacman-c++/pics/block4.png
Binary files differ
diff --git a/pacman-c++/pics/block8.png b/pacman-c++/pics/block8.png
new file mode 100644
index 0000000..00fbd74
--- /dev/null
+++ b/pacman-c++/pics/block8.png
Binary files differ