Diffstat (limited to 'noncore/games/snake/interface.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/games/snake/interface.cpp | 43 |
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 | ||
71 | SnakeGame::~SnakeGame() | 71 | SnakeGame::~SnakeGame() |
72 | { | 72 | { |
73 | delete snake; | 73 | delete snake; |
@@ -81,38 +81,38 @@ void SnakeGame::resizeEvent(QResizeEvent *) | |||
81 | } | 81 | } |
82 | 82 | ||
83 | void SnakeGame::welcomescreen() | 83 | void 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 | ||
111 | void SnakeGame::newGame() | 111 | void 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 | ||
137 | void SnakeGame::showScore(int score) | 134 | void 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 | ||
163 | void SnakeGame::createTargets() | 160 | void 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 | ||
170 | void SnakeGame::clear() | 167 | void 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 | ||
180 | void SnakeGame::gameOver() | 177 | void 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 | ||
198 | void SnakeGame::wait() | 195 | void 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 | ||
211 | void SnakeGame::keyPressEvent(QKeyEvent* event) | 208 | void 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 | ||