summaryrefslogtreecommitdiff
path: root/noncore/games/snake/interface.cpp
Unidiff
Diffstat (limited to 'noncore/games/snake/interface.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/snake/interface.cpp43
1 files changed, 20 insertions, 23 deletions
diff --git a/noncore/games/snake/interface.cpp b/noncore/games/snake/interface.cpp
index c9b4931..c824543 100644
--- a/noncore/games/snake/interface.cpp
+++ b/noncore/games/snake/interface.cpp
@@ -60,14 +60,14 @@ SnakeGame::SnakeGame(QWidget* parent, const char* name, WFlags f) :
60 toolbar->setStretchableWidget( scorelabel ); 60 toolbar->setStretchableWidget( scorelabel );
61 61
62 setFocusPolicy(StrongFocus); 62 setFocusPolicy(StrongFocus);
63 63
64 setCentralWidget(cv); 64 setCentralWidget(cv);
65 65
66 welcomescreen(); 66 QTimer::singleShot( 16, this, SLOT(welcomescreen()) );
67 gamestopped = true; 67 gamestopped = true;
68 waitover = true; 68 waitover = true;
69} 69}
70 70
71SnakeGame::~SnakeGame() 71SnakeGame::~SnakeGame()
72{ 72{
73 delete snake; 73 delete snake;
@@ -81,38 +81,38 @@ void SnakeGame::resizeEvent(QResizeEvent *)
81} 81}
82 82
83void SnakeGame::welcomescreen() 83void SnakeGame::welcomescreen()
84{ 84{
85 QCanvasText* title = new QCanvasText(tr("SNAKE!"), &canvas); 85 QCanvasText* title = new QCanvasText(tr("SNAKE!"), &canvas);
86 title->setColor(yellow); 86 title->setColor(yellow);
87 title->setFont( QFont("times", 18, QFont::Bold) ); 87 title->setFont( QFont("times", 18, QFont::Bold) );
88 int w = title->boundingRect().width(); 88 int w = title->boundingRect().width();
89 title->move(canvas.width()/2 -w/2, canvas.height()/2-110); 89 title->move(canvas.width()/2 -w/2, canvas.height()/2-110);
90 title->show(); 90 title->show();
91 QCanvasPixmapArray* titlearray = new QCanvasPixmapArray(Resource::findPixmap("title")); 91 QCanvasPixmapArray* titlearray = new QCanvasPixmapArray(Resource::findPixmap("snake/title"));
92 QCanvasSprite* titlepic = new QCanvasSprite(titlearray, &canvas); 92 QCanvasSprite* titlepic = new QCanvasSprite(titlearray, &canvas);
93 titlepic->move(canvas.width()/2 - 33, canvas.height()/2-85); 93 titlepic->move(canvas.width()/2 - 33, canvas.height()/2-85);
94 titlepic->show(); 94 titlepic->show();
95 QCanvasText* instr = new QCanvasText(tr("Use the arrow keys to guide the\n" 95 QCanvasText* instr = new QCanvasText(tr("Use the arrow keys to guide the\n"
96 "snake to eat the mouse. You must not\n" 96 "snake to eat the mouse. You must not\n"
97 "crash into the walls, edges or its tail."), 97 "crash into the walls, edges or its tail."),
98 &canvas); 98 &canvas);
99 w = instr->boundingRect().width(); 99 w = instr->boundingRect().width();
100 instr->move(canvas.width()/2-w/2, canvas.height()/2-20); 100 instr->move(canvas.width()/2-w/2, canvas.height()/2-20);
101 instr->setColor(white); 101 instr->setColor(white);
102 instr->show(); 102 instr->show();
103 QCanvasText* cont = new QCanvasText(tr("Press Any Key To Start"), &canvas); 103 QCanvasText* cont = new QCanvasText(tr("Press Any Key To Start"), &canvas);
104 w = cont->boundingRect().width(); 104 w = cont->boundingRect().width();
105 cont->move(canvas.width()/2-w/2, canvas.height()/2+80); 105 cont->move(canvas.width()/2-w/2, canvas.height()-20);
106 cont->setColor(yellow); 106 cont->setColor(yellow);
107 cont->show(); 107 cont->show();
108 108
109} 109}
110 110
111void SnakeGame::newGame() 111void SnakeGame::newGame()
112{ 112{
113 clear(); 113 clear();
114 snake = new Snake(&canvas); 114 snake = new Snake(&canvas);
115 connect(snake, SIGNAL(dead()), this, SLOT(gameOver()) ); 115 connect(snake, SIGNAL(dead()), this, SLOT(gameOver()) );
116 connect(snake, SIGNAL(targethit()), this, SLOT(levelUp()) ); 116 connect(snake, SIGNAL(targethit()), this, SLOT(levelUp()) );
117 connect(snake, SIGNAL(scorechanged()), this, SLOT(scoreInc()) ); 117 connect(snake, SIGNAL(scorechanged()), this, SLOT(scoreInc()) );
118 connect(this, SIGNAL(moveFaster()), snake, SLOT(increaseSpeed()) ); 118 connect(this, SIGNAL(moveFaster()), snake, SLOT(increaseSpeed()) );
@@ -121,18 +121,15 @@ void SnakeGame::newGame()
121 notargets = 1; 121 notargets = 1;
122 level = 1; 122 level = 1;
123 stage = 1; 123 stage = 1;
124 showScore(0); 124 showScore(0);
125 gamestopped = false; 125 gamestopped = false;
126 waitover = true; 126 waitover = true;
127 int x = canvas.width()/2 - 70;
128 x = x - x % 16;
129 int y = canvas.height()-50; 127 int y = canvas.height()-50;
130 y = y - y % 16; 128 (void)new Obstacle(&canvas, 32);
131 (void)new Obstacle(&canvas, x, 32); 129 (void)new Obstacle(&canvas, y);
132 (void)new Obstacle(&canvas, x, y);
133 createTargets(); 130 createTargets();
134} 131}
135 132
136 133
137void SnakeGame::showScore(int score) 134void SnakeGame::showScore(int score)
138{ 135{
@@ -158,67 +155,67 @@ void SnakeGame::levelUp()
158 } 155 }
159 createTargets(); 156 createTargets();
160 } 157 }
161} 158}
162 159
163void SnakeGame::createTargets() 160void SnakeGame::createTargets()
164{ 161{
165 for (int i = 0; i < targetamount; i++) 162 for (int i = 0; i < targetamount; i++)
166 (void)new Target(&canvas); 163 (void)new Target(&canvas);
167 notargets = targetamount; 164 notargets = targetamount;
168} 165}
169 166
170void SnakeGame::clear() 167void SnakeGame::clear()
171{ 168{
172 delete snake; 169 delete snake;
173 snake = 0; 170 snake = 0;
174 QCanvasItemList l = canvas.allItems(); 171 QCanvasItemList l = canvas.allItems();
175 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) { 172 for (QCanvasItemList::Iterator it=l.begin(); it!=l.end(); ++it) {
176 delete *it; 173 delete *it;
177 } 174 }
178} 175}
179 176
180void SnakeGame::gameOver() 177void SnakeGame::gameOver()
181{ 178{
182 int score = snake->getScore(); 179 int score = snake->getScore();
183 QString scoreoutput=""; 180 QString scoreoutput="";
184 scoreoutput.setNum(score); 181 scoreoutput.setNum(score);
185 QCanvasText* gameover = new QCanvasText(tr("GAME OVER!\n Your Score: %1").arg( scoreoutput), &canvas); 182 QCanvasText* gameover = new QCanvasText(tr("GAME OVER!\n Your Score: %1").arg( scoreoutput), &canvas);
186 183
187 gameover->setZ(100); 184 gameover->setZ(100);
188 gameover->setColor(yellow); 185 gameover->setColor(yellow);
189 gameover->setFont( QFont("times", 18, QFont::Bold) ); 186 gameover->setFont( QFont("times", 18, QFont::Bold) );
190 int w = gameover->boundingRect().width(); 187 int w = gameover->boundingRect().width();
191 gameover->move(canvas.width()/2 -w/2, canvas.height()/2 -50); 188 gameover->move(canvas.width()/2 -w/2, canvas.height()/2 -50);
192 gameover->show(); 189 gameover->show();
193 gamestopped = true; 190 gamestopped = true;
194 waitover = false; 191 waitover = false;
195 pauseTimer->start(2500); 192 pauseTimer->start(1500);
196} 193}
197 194
198void SnakeGame::wait() 195void SnakeGame::wait()
199{ 196{
200 waitover = true; 197 waitover = true;
201 pauseTimer->stop(); 198 pauseTimer->stop();
202 QCanvasText* cont = new QCanvasText(tr("Press Any Key to Begin a New Game."), 199 QCanvasText* cont = new QCanvasText(tr("Press Any Key to Begin a New Game."),
203 &canvas); 200 &canvas);
204 cont->setZ(100); 201 cont->setZ(100);
205 cont->setColor(white); 202 cont->setColor(white);
206 int w = cont->boundingRect().width(); 203 int w = cont->boundingRect().width();
207 cont->move(canvas.width()/2 -w/2, canvas.height()/2); 204 cont->move(canvas.width()/2 -w/2, canvas.height()/2);
208 cont->show(); 205 cont->show();
209} 206}
210 207
211void SnakeGame::keyPressEvent(QKeyEvent* event) 208void SnakeGame::keyPressEvent(QKeyEvent* event)
212{ 209{
213 if (gamestopped) { 210 if (gamestopped) {
214 if (waitover) 211 if (waitover)
215 newGame(); 212 newGame();
216 else 213 else
217 return; 214 return;
218 } 215 }
219 else { 216 else {
220 int newkey = event->key(); 217 int newkey = event->key();
221 snake->go(newkey); 218 snake->go(newkey);
222 } 219 }
223} 220}
224 221