summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/mindbreaker/mindbreaker.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/noncore/games/mindbreaker/mindbreaker.cpp b/noncore/games/mindbreaker/mindbreaker.cpp
index b0e4d88..1a1d05d 100644
--- a/noncore/games/mindbreaker/mindbreaker.cpp
+++ b/noncore/games/mindbreaker/mindbreaker.cpp
@@ -88,216 +88,216 @@ void Peg::buildImages()
88 QImage pegs = Resource::loadImage("mindbreaker/pegs"); 88 QImage pegs = Resource::loadImage("mindbreaker/pegs");
89 int x = 0; 89 int x = 0;
90 int y = 0; 90 int y = 0;
91 int i; 91 int i;
92 eggLevel = 0; 92 eggLevel = 0;
93 normalPegs.resize(10); 93 normalPegs.resize(10);
94 for (i = 0; i < 6; i++) { 94 for (i = 0; i < 6; i++) {
95 normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size))); 95 normalPegs.insert(i, new QImage(pegs.copy(x, y, peg_size, peg_size)));
96 x += peg_size; 96 x += peg_size;
97 } 97 }
98 specialPegs.resize(5); 98 specialPegs.resize(5);
99 for (i = 0; i < 5; i++) { 99 for (i = 0; i < 5; i++) {
100 specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size))); 100 specialPegs.insert(i, new QImage(pegs.copy(x,y,peg_size, peg_size)));
101 x += peg_size; 101 x += peg_size;
102 } 102 }
103 103
104 QImage image = Resource::loadImage("mindbreaker/mindbreaker"); 104 QImage image = Resource::loadImage("mindbreaker/mindbreaker");
105 /* copy from master image to functional images */ 105 /* copy from master image to functional images */
106 x = 0; 106 x = 0;
107 y = panel_height; 107 y = panel_height;
108 normalPegs.insert(8, 108 normalPegs.insert(8,
109 new QImage(image.copy(x, y, panel_width, panel_height))); 109 new QImage(image.copy(x, y, panel_width, panel_height)));
110 y += panel_height; 110 y += panel_height;
111 y += title_height; 111 y += title_height;
112 normalPegs.insert(9, 112 normalPegs.insert(9,
113 new QImage(image.copy(x, y, title_width, title_height))); 113 new QImage(image.copy(x, y, title_width, title_height)));
114 y += title_height; 114 y += title_height;
115 115
116 x = 6 * peg_size; 116 x = 6 * peg_size;
117 normalPegs.insert(6, 117 normalPegs.insert(6,
118 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size))); 118 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size)));
119 x += answerpeg_size; 119 x += answerpeg_size;
120 normalPegs.insert(7, 120 normalPegs.insert(7,
121 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size))); 121 new QImage(image.copy(x, y, answerpeg_size, answerpeg_size)));
122} 122}
123 123
124QImage Peg::imageForType(int t) 124QImage Peg::imageForType(int t)
125{ 125{
126 if (eggLevel > t ) { 126 if (eggLevel > t ) {
127 if( t < 5) { 127 if( t < 5) {
128 return *specialPegs[t]; 128 return *specialPegs[t];
129 } else { 129 } else {
130 return *normalPegs[rand() % 6]; 130 return *normalPegs[rand() % 6];
131 } 131 }
132 } 132 }
133 return *normalPegs[t]; 133 return *normalPegs[t];
134} 134}
135 135
136Peg::Peg(QCanvas *canvas , int t, int g = -1, int p = -1) 136Peg::Peg(QCanvas *canvas , int t, int g, int p)
137 : QCanvasRectangle(canvas) 137 : QCanvasRectangle(canvas)
138{ 138{
139 setSize(normalPegs[t]->width(), normalPegs[t]->height() ); 139 setSize(normalPegs[t]->width(), normalPegs[t]->height() );
140 pegtype = t; 140 pegtype = t;
141 isplaced = FALSE; 141 isplaced = FALSE;
142 peg_pos = p; 142 peg_pos = p;
143 peg_go = g; 143 peg_go = g;
144 aniStep = rand() % 6; 144 aniStep = rand() % 6;
145 setAnimated(TRUE); 145 setAnimated(TRUE);
146} 146}
147 147
148void Peg::advance(int phase) { 148void Peg::advance(int phase) {
149 if (phase == 0) 149 if (phase == 0)
150 aniStep = (++aniStep) % 6; 150 aniStep = (++aniStep) % 6;
151 else { 151 else {
152 hide(); 152 hide();
153 show(); 153 show();
154 } 154 }
155} 155}
156 156
157void Peg::drawShape(QPainter &p ) 157void Peg::drawShape(QPainter &p )
158{ 158{
159 if ((pegtype == 5) && eggLevel > 5) { 159 if ((pegtype == 5) && eggLevel > 5) {
160 p.drawImage(x(), y(), *normalPegs[aniStep]); 160 p.drawImage(x(), y(), *normalPegs[aniStep]);
161 } else 161 } else
162 p.drawImage(x(), y(), imageForType(pegtype)); 162 p.drawImage(x(), y(), imageForType(pegtype));
163} 163}
164 164
165bool Peg::hit( const QPoint &p ) const 165bool Peg::hit( const QPoint &p ) const
166{ 166{
167 int ix = p.x() - int(x()); 167 int ix = p.x() - int(x());
168 int iy = p.y() - int(y()); 168 int iy = p.y() - int(y());
169 if (!normalPegs[pegtype]->valid(ix, iy)) 169 if (!normalPegs[pegtype]->valid(ix, iy))
170 return FALSE; 170 return FALSE;
171 QRgb pixel = normalPegs[pegtype]->pixel(ix, iy); 171 QRgb pixel = normalPegs[pegtype]->pixel(ix, iy);
172 return (qAlpha(pixel ) != 0); 172 return (qAlpha(pixel ) != 0);
173} 173}
174 174
175inline bool Peg::placed() const 175inline bool Peg::placed() const
176{ 176{
177 return isplaced; 177 return isplaced;
178} 178}
179 179
180inline int Peg::pegGo() const 180inline int Peg::pegGo() const
181{ 181{
182 return peg_go; 182 return peg_go;
183} 183}
184 184
185inline int Peg::pegPos() const 185inline int Peg::pegPos() const
186{ 186{
187 return peg_pos; 187 return peg_pos;
188} 188}
189 189
190inline void Peg::setPegPos(int p) 190inline void Peg::setPegPos(int p)
191{ 191{
192 peg_pos = p; 192 peg_pos = p;
193} 193}
194 194
195inline void Peg::setPlaced(bool p) 195inline void Peg::setPlaced(bool p)
196{ 196{
197 isplaced = p; 197 isplaced = p;
198} 198}
199 199
200inline int Peg::type() const 200inline int Peg::type() const
201{ 201{
202 return pegtype; 202 return pegtype;
203} 203}
204 204
205/* Load the main image, copy from it the pegs, the board, and the answer image 205/* Load the main image, copy from it the pegs, the board, and the answer image
206 * and use these to create the tray, answer and board 206 * and use these to create the tray, answer and board
207 */ 207 */
208MindBreaker::MindBreaker( QWidget *parent=0, const char *name=0, int wFlags=0 ) 208MindBreaker::MindBreaker( QWidget *parent, const char *name, int wFlags )
209: QMainWindow(parent, name, wFlags), 209: QMainWindow(parent, name, wFlags),
210 canvas(board_height, board_width) 210 canvas(board_height, board_width)
211{ 211{
212 MindBreakerBoard *m = new MindBreakerBoard(canvas, this); 212 MindBreakerBoard *m = new MindBreakerBoard(canvas, this);
213 setCentralWidget(m); 213 setCentralWidget(m);
214 214
215 setToolBarsMovable( FALSE ); 215 setToolBarsMovable( FALSE );
216 216
217 QPEToolBar *tb = new QPEToolBar(this); 217 QPEToolBar *tb = new QPEToolBar(this);
218 tb->setHorizontalStretchable( TRUE ); 218 tb->setHorizontalStretchable( TRUE );
219 219
220 QPixmap newicon = Resource::loadPixmap("new"); 220 QPixmap newicon = Resource::loadPixmap("new");
221 new QToolButton(newicon, tr("New Game"), 0, 221 new QToolButton(newicon, tr("New Game"), 0,
222 m, SLOT(clear()), tb, "NewGame"); 222 m, SLOT(clear()), tb, "NewGame");
223 223
224 score = new QToolButton(tb); 224 score = new QToolButton(tb);
225 score->setText(""); 225 score->setText("");
226 score->setMaximumHeight(20); 226 score->setMaximumHeight(20);
227 score->setUsesTextLabel(TRUE); 227 score->setUsesTextLabel(TRUE);
228 tb->setStretchableWidget(score); 228 tb->setStretchableWidget(score);
229 229
230 connect(m, SIGNAL(scoreChanged(int, int)), this, SLOT(setScore(int, int))); 230 connect(m, SIGNAL(scoreChanged(int, int)), this, SLOT(setScore(int, int)));
231 connect(score, SIGNAL(clicked()), m, SLOT(resetScore())); 231 connect(score, SIGNAL(clicked()), m, SLOT(resetScore()));
232 232
233 int a, b; 233 int a, b;
234 m->getScore(&a, &b); 234 m->getScore(&a, &b);
235 setScore(a,b); 235 setScore(a,b);
236} 236}
237 237
238void MindBreaker::setScore(int turns, int games) 238void MindBreaker::setScore(int turns, int games)
239{ 239{
240 double average; 240 double average;
241 double total_turns = turns; 241 double total_turns = turns;
242 double total_games = games; 242 double total_games = games;
243 243
244 if(total_games > 0) 244 if(total_games > 0)
245 average = total_turns / total_games; 245 average = total_turns / total_games;
246 else 246 else
247 average = 0.0; 247 average = 0.0;
248 248
249 score->setText(tr("win avg: %1 turns (%2 games)").arg(average).arg(games)); 249 score->setText(tr("win avg: %1 turns (%2 games)").arg(average).arg(games));
250} 250}
251 251
252 252
253MindBreakerBoard::MindBreakerBoard( QCanvas &c, QWidget *parent=0, 253MindBreakerBoard::MindBreakerBoard( QCanvas &canv, QWidget *parent,
254 const char *name=0, int wFlags=0 ) 254 const char *name, int wFlags )
255 : QCanvasView(&c, parent, name, wFlags) 255 : QCanvasView(&canv, parent, name, wFlags)
256{ 256{
257 int i, x, y; 257 int i, x, y;
258 struct timeval tv; 258 struct timeval tv;
259 259
260 current_go = 0; 260 current_go = 0;
261 gettimeofday(&tv, 0); 261 gettimeofday(&tv, 0);
262 262
263 srand(tv.tv_usec); 263 srand(tv.tv_usec);
264 264
265 canvas()->setAdvancePeriod(500); 265 canvas()->setAdvancePeriod(500);
266 266
267 QImage image = Resource::loadImage("mindbreaker/mindbreaker"); 267 QImage image = Resource::loadImage("mindbreaker/mindbreaker");
268 268
269 /* copy from master image to functional images */ 269 /* copy from master image to functional images */
270 x = 0; 270 x = 0;
271 y = 0; 271 y = 0;
272 panelImage = image.copy(x,y, panel_width, panel_height); 272 panelImage = image.copy(x,y, panel_width, panel_height);
273 y += panel_height; 273 y += panel_height;
274 y += panel_height; 274 y += panel_height;
275 275
276 titleImage = image.copy(x, y, title_width, title_height); 276 titleImage = image.copy(x, y, title_width, title_height);
277 277
278 Peg::buildImages(); // must be done BEFORE any pegs are made 278 Peg::buildImages(); // must be done BEFORE any pegs are made
279 279
280 current_highlight = new Peg(canvas(), 8); 280 current_highlight = new Peg(canvas(), 8);
281 current_highlight->setPlaced(TRUE); 281 current_highlight->setPlaced(TRUE);
282 current_highlight->setX(0); 282 current_highlight->setX(0);
283 current_highlight->setY(board_height - ((current_go + 1) * panel_height)); 283 current_highlight->setY(board_height - ((current_go + 1) * panel_height));
284 current_highlight->setZ(0); 284 current_highlight->setZ(0);
285 current_highlight->show(); 285 current_highlight->show();
286 286
287 287
288 /* set up the game */ 288 /* set up the game */
289 Config c("MindBreaker", Config::User); 289 Config c("MindBreaker", Config::User);
290 c.setGroup("Board"); 290 c.setGroup("Board");
291 game_over = FALSE; 291 game_over = FALSE;
292 if (c.readNumEntry("Answer0") < 0) { 292 if (c.readNumEntry("Answer0") < 0) {
293 for (i = 0; i < 4; i++) { 293 for (i = 0; i < 4; i++) {
294 answer[i] = rand() % 6; 294 answer[i] = rand() % 6;
295 current_guess[i] = 6; 295 current_guess[i] = 6;
296 } 296 }
297 total_turns = 0; 297 total_turns = 0;
298 total_games = 0; 298 total_games = 0;
299 } else { 299 } else {
300 int j; 300 int j;
301 c.setGroup("Score"); 301 c.setGroup("Score");
302 total_turns = c.readNumEntry("Turns"); 302 total_turns = c.readNumEntry("Turns");
303 total_games = c.readNumEntry("Games"); 303 total_games = c.readNumEntry("Games");