Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17dg by
game/game.cpp@15:0145c5f0bea1, 2019-03-18 (annotated)
- Committer:
 - Noximilien
 - Date:
 - Mon Mar 18 15:22:20 2019 +0000
 - Revision:
 - 15:0145c5f0bea1
 - Parent:
 - 14:e8de27c4d0d4
 - Child:
 - 16:b7d0cac561cc
 
Have created new limit borders to suit the score line. Have created intro sprites for my intro. Need to fix the problem where enemy ship is generated beyond screen.
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Noximilien | 3:10918b0f7a7d | 1 | |
| Noximilien | 3:10918b0f7a7d | 2 | |
| Noximilien | 3:10918b0f7a7d | 3 | #include "mbed.h" | 
| Noximilien | 3:10918b0f7a7d | 4 | #include "N5110.h" | 
| Noximilien | 3:10918b0f7a7d | 5 | #include "Gamepad.h" | 
| Noximilien | 3:10918b0f7a7d | 6 | |
| Noximilien | 3:10918b0f7a7d | 7 | #include "models.h" | 
| Noximilien | 4:02c63aaa2df9 | 8 | #include "main.h" | 
| Noximilien | 4:02c63aaa2df9 | 9 | #include "game.h" | 
| Noximilien | 5:2b9181bc5c89 | 10 | |
| Noximilien | 5:2b9181bc5c89 | 11 | int x_ship_pos = 0; | 
| Noximilien | 5:2b9181bc5c89 | 12 | int y_ship_pos = 24; | 
| Noximilien | 11:cf2ba52e8b7e | 13 | int small_star_delay = 0; | 
| Noximilien | 7:42376925945c | 14 | |
| Noximilien | 8:c18c240665aa | 15 | const int ship_speed = 2; | 
| Noximilien | 11:cf2ba52e8b7e | 16 | const int small_star_delay_max = 3; | 
| Noximilien | 6:100b46be4bea | 17 | |
| Noximilien | 12:bfe3a3deaac3 | 18 | |
| Noximilien | 12:bfe3a3deaac3 | 19 | struct GameObject { | 
| Noximilien | 12:bfe3a3deaac3 | 20 | int x; | 
| Noximilien | 12:bfe3a3deaac3 | 21 | int y; | 
| Noximilien | 12:bfe3a3deaac3 | 22 | bool active; | 
| Noximilien | 12:bfe3a3deaac3 | 23 | }; | 
| Noximilien | 9:5ad5501c702e | 24 | |
| Noximilien | 12:bfe3a3deaac3 | 25 | struct Enemy : public GameObject { | 
| Noximilien | 12:bfe3a3deaac3 | 26 | bool dead; | 
| Noximilien | 12:bfe3a3deaac3 | 27 | int dead_counter; | 
| Noximilien | 12:bfe3a3deaac3 | 28 | }; | 
| Noximilien | 12:bfe3a3deaac3 | 29 | |
| Noximilien | 12:bfe3a3deaac3 | 30 | #define MAX_BLASTS (5) | 
| Noximilien | 12:bfe3a3deaac3 | 31 | GameObject blasts[MAX_BLASTS]; | 
| Noximilien | 12:bfe3a3deaac3 | 32 | const float blast_collision_radius = 1; | 
| Noximilien | 12:bfe3a3deaac3 | 33 | const float blast_collision_offset_x = 1; | 
| Noximilien | 12:bfe3a3deaac3 | 34 | const float blast_collision_offset_y = 0; | 
| Noximilien | 12:bfe3a3deaac3 | 35 | |
| Noximilien | 12:bfe3a3deaac3 | 36 | #define MAX_SMALL_STARS (5) | 
| Noximilien | 13:5c3dc6e827c2 | 37 | GameObject small_stars[MAX_SMALL_STARS]; | 
| Noximilien | 12:bfe3a3deaac3 | 38 | |
| Noximilien | 12:bfe3a3deaac3 | 39 | #define MAX_MEDIUM_STARS (10) | 
| Noximilien | 13:5c3dc6e827c2 | 40 | GameObject medium_stars[MAX_MEDIUM_STARS]; | 
| Noximilien | 11:cf2ba52e8b7e | 41 | |
| Noximilien | 12:bfe3a3deaac3 | 42 | #define MAX_ENEMIES (1) | 
| Noximilien | 12:bfe3a3deaac3 | 43 | Enemy enemies[MAX_ENEMIES]; | 
| Noximilien | 12:bfe3a3deaac3 | 44 | const float enemy_collision_radius = 8; | 
| Noximilien | 12:bfe3a3deaac3 | 45 | const float enemy_collision_offset_x = 5; | 
| Noximilien | 12:bfe3a3deaac3 | 46 | const float enemy_collision_offset_y = 3; | 
| Noximilien | 12:bfe3a3deaac3 | 47 | |
| Noximilien | 14:e8de27c4d0d4 | 48 | int game_score = 0; | 
| Noximilien | 14:e8de27c4d0d4 | 49 | |
| Noximilien | 12:bfe3a3deaac3 | 50 | |
| Noximilien | 12:bfe3a3deaac3 | 51 | GameObject player; | 
| Noximilien | 12:bfe3a3deaac3 | 52 | |
| Noximilien | 12:bfe3a3deaac3 | 53 | void spawnNewEnemy() { | 
| Noximilien | 12:bfe3a3deaac3 | 54 | int found = -1; | 
| Noximilien | 12:bfe3a3deaac3 | 55 | for (int i = 0; i < MAX_ENEMIES; ++i) { | 
| Noximilien | 12:bfe3a3deaac3 | 56 | if (!enemies[i].active) { | 
| Noximilien | 12:bfe3a3deaac3 | 57 | found = i; | 
| Noximilien | 12:bfe3a3deaac3 | 58 | break; | 
| Noximilien | 12:bfe3a3deaac3 | 59 | } | 
| Noximilien | 12:bfe3a3deaac3 | 60 | } | 
| Noximilien | 12:bfe3a3deaac3 | 61 | |
| Noximilien | 12:bfe3a3deaac3 | 62 | if (found != -1) { | 
| Noximilien | 12:bfe3a3deaac3 | 63 | enemies[found].dead = false; | 
| Noximilien | 12:bfe3a3deaac3 | 64 | enemies[found].active = true; | 
| Noximilien | 12:bfe3a3deaac3 | 65 | enemies[found].x = screen_width; | 
| Noximilien | 15:0145c5f0bea1 | 66 | enemies[found].y = rand() % (screen_height - enemy2_height) + game_score_height; | 
| Noximilien | 12:bfe3a3deaac3 | 67 | |
| Noximilien | 12:bfe3a3deaac3 | 68 | } | 
| Noximilien | 12:bfe3a3deaac3 | 69 | } | 
| Noximilien | 12:bfe3a3deaac3 | 70 | |
| Noximilien | 12:bfe3a3deaac3 | 71 | void updateAndDrawEnemies() { | 
| Noximilien | 12:bfe3a3deaac3 | 72 | const int enemy_speed = 2; | 
| Noximilien | 12:bfe3a3deaac3 | 73 | for (int i = 0; i < MAX_ENEMIES; ++i) { | 
| Noximilien | 12:bfe3a3deaac3 | 74 | if (enemies[i].active){ | 
| Noximilien | 12:bfe3a3deaac3 | 75 | enemies[i].x -= enemy_speed; | 
| Noximilien | 12:bfe3a3deaac3 | 76 | if (!enemies[i].dead) { | 
| Noximilien | 12:bfe3a3deaac3 | 77 | lcd.drawSprite(enemies[i].x, enemies[i].y, 7, 11, (int*)enemyShip2); | 
| Noximilien | 14:e8de27c4d0d4 | 78 | } | 
| Noximilien | 14:e8de27c4d0d4 | 79 | if (enemies[i].x < 0){ | 
| Noximilien | 14:e8de27c4d0d4 | 80 | enemies[i].active = false; | 
| Noximilien | 14:e8de27c4d0d4 | 81 | } | 
| Noximilien | 14:e8de27c4d0d4 | 82 | else { | 
| Noximilien | 12:bfe3a3deaac3 | 83 | if (enemies[i].dead_counter > 0) { | 
| Noximilien | 12:bfe3a3deaac3 | 84 | enemies[i].dead_counter--; | 
| Noximilien | 14:e8de27c4d0d4 | 85 | if (enemies[i].dead_counter == 2){ | 
| Noximilien | 14:e8de27c4d0d4 | 86 | lcd.drawSprite(enemies[i].x, enemies[i].y, 7, 11, (int*)enemyHalfExploded); | 
| Noximilien | 14:e8de27c4d0d4 | 87 | } | 
| Noximilien | 14:e8de27c4d0d4 | 88 | else if (enemies[i].dead_counter == 1){ | 
| Noximilien | 14:e8de27c4d0d4 | 89 | lcd.drawSprite(enemies[i].x, enemies[i].y, 7, 11, (int*)enemyExploded); | 
| Noximilien | 14:e8de27c4d0d4 | 90 | game_score += 30; | 
| Noximilien | 14:e8de27c4d0d4 | 91 | } | 
| Noximilien | 14:e8de27c4d0d4 | 92 | else { | 
| Noximilien | 12:bfe3a3deaac3 | 93 | enemies[i].active = false; | 
| Noximilien | 12:bfe3a3deaac3 | 94 | } | 
| Noximilien | 12:bfe3a3deaac3 | 95 | } | 
| Noximilien | 12:bfe3a3deaac3 | 96 | } | 
| Noximilien | 12:bfe3a3deaac3 | 97 | } | 
| Noximilien | 12:bfe3a3deaac3 | 98 | } | 
| Noximilien | 12:bfe3a3deaac3 | 99 | } | 
| Noximilien | 12:bfe3a3deaac3 | 100 | |
| Noximilien | 12:bfe3a3deaac3 | 101 | void updateAndDrawBlasts() { | 
| Noximilien | 12:bfe3a3deaac3 | 102 | const int blast_speed = 5; | 
| Noximilien | 12:bfe3a3deaac3 | 103 | for (int i = 0; i < MAX_BLASTS; ++i) { | 
| Noximilien | 12:bfe3a3deaac3 | 104 | if (blasts[i].active) { | 
| Noximilien | 12:bfe3a3deaac3 | 105 | blasts[i].x += blast_speed; | 
| Noximilien | 12:bfe3a3deaac3 | 106 | if (blasts[i].x >= screen_width){ | 
| Noximilien | 12:bfe3a3deaac3 | 107 | blasts[i].active = false; | 
| Noximilien | 12:bfe3a3deaac3 | 108 | } | 
| Noximilien | 12:bfe3a3deaac3 | 109 | lcd.setPixel(blasts[i].x, blasts[i].y, 1); | 
| Noximilien | 12:bfe3a3deaac3 | 110 | lcd.setPixel(blasts[i].x+1, blasts[i].y, 1); | 
| Noximilien | 12:bfe3a3deaac3 | 111 | lcd.setPixel(blasts[i].x+2, blasts[i].y, 1); | 
| Noximilien | 12:bfe3a3deaac3 | 112 | } | 
| Noximilien | 12:bfe3a3deaac3 | 113 | } | 
| Noximilien | 12:bfe3a3deaac3 | 114 | } | 
| Noximilien | 12:bfe3a3deaac3 | 115 | |
| Noximilien | 12:bfe3a3deaac3 | 116 | void fireNewBlast() { | 
| Noximilien | 12:bfe3a3deaac3 | 117 | // Search the array of blasts if inactive we can use it. | 
| Noximilien | 12:bfe3a3deaac3 | 118 | int found = -1; | 
| Noximilien | 12:bfe3a3deaac3 | 119 | for (int i = 0; i < MAX_BLASTS; ++i) { | 
| Noximilien | 12:bfe3a3deaac3 | 120 | if (!blasts[i].active) { | 
| Noximilien | 12:bfe3a3deaac3 | 121 | found = i; | 
| Noximilien | 12:bfe3a3deaac3 | 122 | break; | 
| Noximilien | 12:bfe3a3deaac3 | 123 | } | 
| Noximilien | 12:bfe3a3deaac3 | 124 | } | 
| Noximilien | 12:bfe3a3deaac3 | 125 | |
| Noximilien | 12:bfe3a3deaac3 | 126 | if (found != -1) { | 
| Noximilien | 12:bfe3a3deaac3 | 127 | blasts[found].active = true; | 
| Noximilien | 12:bfe3a3deaac3 | 128 | blasts[found].x = x_ship_pos + spaceship1_width; | 
| Noximilien | 12:bfe3a3deaac3 | 129 | blasts[found].y = y_ship_pos + (spaceship1_height/2); | 
| Noximilien | 12:bfe3a3deaac3 | 130 | } | 
| Noximilien | 12:bfe3a3deaac3 | 131 | } | 
| Noximilien | 12:bfe3a3deaac3 | 132 | |
| Noximilien | 12:bfe3a3deaac3 | 133 | inline bool circleCollideTwoObjects( | 
| Noximilien | 12:bfe3a3deaac3 | 134 | int x1, int y1, float r1, float offset_x1, float offset_y1, | 
| Noximilien | 12:bfe3a3deaac3 | 135 | int x2, int y2, float r2, float offset_x2, float offset_y2 | 
| Noximilien | 12:bfe3a3deaac3 | 136 | ) { | 
| Noximilien | 12:bfe3a3deaac3 | 137 | int distance = pow((x1 + offset_x1) - (x2 + offset_x2), 2) + pow((y1 + offset_y1) - (y2 + offset_y2), 2); | 
| Noximilien | 12:bfe3a3deaac3 | 138 | return distance <= pow(r1 + r2, 2); | 
| Noximilien | 12:bfe3a3deaac3 | 139 | } | 
| Noximilien | 12:bfe3a3deaac3 | 140 | |
| Noximilien | 12:bfe3a3deaac3 | 141 | void collideEnemiesAndBlasts() { | 
| Noximilien | 12:bfe3a3deaac3 | 142 | for (int i = 0; i < MAX_ENEMIES; ++i) { | 
| Noximilien | 12:bfe3a3deaac3 | 143 | for (int j = 0; j < MAX_BLASTS; ++j) { | 
| Noximilien | 12:bfe3a3deaac3 | 144 | if (enemies[i].active && !enemies[i].dead && blasts[j].active) { | 
| Noximilien | 12:bfe3a3deaac3 | 145 | bool collision = circleCollideTwoObjects( | 
| Noximilien | 12:bfe3a3deaac3 | 146 | enemies[i].x, enemies[i].y, enemy_collision_radius, enemy_collision_offset_x, enemy_collision_offset_y, | 
| Noximilien | 12:bfe3a3deaac3 | 147 | blasts[j].x, blasts[j].y, blast_collision_radius, blast_collision_offset_x, blast_collision_offset_y | 
| Noximilien | 12:bfe3a3deaac3 | 148 | ); | 
| Noximilien | 12:bfe3a3deaac3 | 149 | if (collision) { | 
| Noximilien | 12:bfe3a3deaac3 | 150 | enemies[i].dead = true; | 
| Noximilien | 12:bfe3a3deaac3 | 151 | enemies[i].dead_counter = 3; | 
| Noximilien | 12:bfe3a3deaac3 | 152 | blasts[j].active = false; | 
| Noximilien | 12:bfe3a3deaac3 | 153 | } | 
| Noximilien | 12:bfe3a3deaac3 | 154 | } | 
| Noximilien | 12:bfe3a3deaac3 | 155 | } | 
| Noximilien | 12:bfe3a3deaac3 | 156 | } | 
| Noximilien | 12:bfe3a3deaac3 | 157 | } | 
| Noximilien | 5:2b9181bc5c89 | 158 | |
| Noximilien | 13:5c3dc6e827c2 | 159 | void newSmallStarFlies() { | 
| Noximilien | 13:5c3dc6e827c2 | 160 | // Search the array of stars if inactive we can use it. - the same as with blasts | 
| Noximilien | 13:5c3dc6e827c2 | 161 | int found = -1; | 
| Noximilien | 13:5c3dc6e827c2 | 162 | for (int i = 0; i < MAX_SMALL_STARS; ++i) { | 
| Noximilien | 13:5c3dc6e827c2 | 163 | if (!small_stars[i].active) { | 
| Noximilien | 13:5c3dc6e827c2 | 164 | found = i; | 
| Noximilien | 13:5c3dc6e827c2 | 165 | break; | 
| Noximilien | 13:5c3dc6e827c2 | 166 | } | 
| Noximilien | 13:5c3dc6e827c2 | 167 | } | 
| Noximilien | 13:5c3dc6e827c2 | 168 | |
| Noximilien | 13:5c3dc6e827c2 | 169 | if (found != -1) { | 
| Noximilien | 13:5c3dc6e827c2 | 170 | small_stars[found].active = true; | 
| Noximilien | 13:5c3dc6e827c2 | 171 | small_stars[found].x = screen_width; | 
| Noximilien | 15:0145c5f0bea1 | 172 | small_stars[found].y = rand() % screen_height + game_score_height; | 
| Noximilien | 13:5c3dc6e827c2 | 173 | } | 
| Noximilien | 13:5c3dc6e827c2 | 174 | } | 
| Noximilien | 13:5c3dc6e827c2 | 175 | |
| Noximilien | 13:5c3dc6e827c2 | 176 | void updateAndDrawSmallStars(){ | 
| Noximilien | 13:5c3dc6e827c2 | 177 | const int small_star_speed = 5; | 
| Noximilien | 13:5c3dc6e827c2 | 178 | for (int i = 0; i < MAX_SMALL_STARS; ++i) { | 
| Noximilien | 13:5c3dc6e827c2 | 179 | if (small_stars[i].active) { | 
| Noximilien | 13:5c3dc6e827c2 | 180 | small_stars[i].x -= small_star_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 181 | if (small_stars[i].x <= 0){ | 
| Noximilien | 13:5c3dc6e827c2 | 182 | small_stars[i].active = false; | 
| Noximilien | 13:5c3dc6e827c2 | 183 | } | 
| Noximilien | 13:5c3dc6e827c2 | 184 | lcd.drawSprite(small_stars[i].x, small_stars[i].y, 3, 3, (int*)starSmall); | 
| Noximilien | 13:5c3dc6e827c2 | 185 | } | 
| Noximilien | 13:5c3dc6e827c2 | 186 | } | 
| Noximilien | 13:5c3dc6e827c2 | 187 | } | 
| Noximilien | 13:5c3dc6e827c2 | 188 | |
| Noximilien | 13:5c3dc6e827c2 | 189 | void newMediumStarFlies() { | 
| Noximilien | 13:5c3dc6e827c2 | 190 | // Search the array of stars if inactive we can use it. - the same as with blasts | 
| Noximilien | 13:5c3dc6e827c2 | 191 | int found = -1; | 
| Noximilien | 13:5c3dc6e827c2 | 192 | for (int i = 0; i < MAX_MEDIUM_STARS; ++i) { | 
| Noximilien | 13:5c3dc6e827c2 | 193 | if (!medium_stars[i].active) { | 
| Noximilien | 13:5c3dc6e827c2 | 194 | found = i; | 
| Noximilien | 13:5c3dc6e827c2 | 195 | break; | 
| Noximilien | 13:5c3dc6e827c2 | 196 | } | 
| Noximilien | 13:5c3dc6e827c2 | 197 | } | 
| Noximilien | 13:5c3dc6e827c2 | 198 | |
| Noximilien | 13:5c3dc6e827c2 | 199 | if (found != -1) { | 
| Noximilien | 13:5c3dc6e827c2 | 200 | medium_stars[found].active = true; | 
| Noximilien | 13:5c3dc6e827c2 | 201 | medium_stars[found].x = screen_width; | 
| Noximilien | 15:0145c5f0bea1 | 202 | medium_stars[found].y =rand() % screen_height + game_score_height; | 
| Noximilien | 13:5c3dc6e827c2 | 203 | } | 
| Noximilien | 13:5c3dc6e827c2 | 204 | } | 
| Noximilien | 13:5c3dc6e827c2 | 205 | |
| Noximilien | 13:5c3dc6e827c2 | 206 | void updateAndDrawMediumStars(){ | 
| Noximilien | 13:5c3dc6e827c2 | 207 | const int medium_star_speed = 5; | 
| Noximilien | 13:5c3dc6e827c2 | 208 | for (int i = 0; i < MAX_MEDIUM_STARS; ++i) { | 
| Noximilien | 13:5c3dc6e827c2 | 209 | if (medium_stars[i].active) { | 
| Noximilien | 13:5c3dc6e827c2 | 210 | medium_stars[i].x -= medium_star_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 211 | if (medium_stars[i].x <= -2){ | 
| Noximilien | 13:5c3dc6e827c2 | 212 | medium_stars[i].active = false; | 
| Noximilien | 13:5c3dc6e827c2 | 213 | } | 
| Noximilien | 13:5c3dc6e827c2 | 214 | lcd.drawSprite(medium_stars[i].x, medium_stars[i].y, 5, 5, (int*)starMedium); | 
| Noximilien | 13:5c3dc6e827c2 | 215 | } | 
| Noximilien | 13:5c3dc6e827c2 | 216 | } | 
| Noximilien | 13:5c3dc6e827c2 | 217 | } | 
| Noximilien | 13:5c3dc6e827c2 | 218 | |
| Noximilien | 13:5c3dc6e827c2 | 219 | void shipMovment(){ // The position of the ship | 
| Noximilien | 13:5c3dc6e827c2 | 220 | |
| Noximilien | 15:0145c5f0bea1 | 221 | if(x_ship_pos <= screen_height && x_ship_pos >= 0){ | 
| Noximilien | 13:5c3dc6e827c2 | 222 | if(x_dir.read() > 0.6f){ | 
| Noximilien | 13:5c3dc6e827c2 | 223 | x_ship_pos -= ship_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 224 | } | 
| Noximilien | 13:5c3dc6e827c2 | 225 | else if(x_dir.read() < 0.4f){ | 
| Noximilien | 13:5c3dc6e827c2 | 226 | x_ship_pos += ship_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 227 | } | 
| Noximilien | 13:5c3dc6e827c2 | 228 | } | 
| Noximilien | 13:5c3dc6e827c2 | 229 | |
| Noximilien | 13:5c3dc6e827c2 | 230 | else if (x_ship_pos <= 48){ x_ship_pos = 0;} //Limits for x direction border IMPROVE IF POSSIBLE. | 
| Noximilien | 13:5c3dc6e827c2 | 231 | else { x_ship_pos = 48;} | 
| Noximilien | 13:5c3dc6e827c2 | 232 | |
| Noximilien | 13:5c3dc6e827c2 | 233 | |
| Noximilien | 15:0145c5f0bea1 | 234 | if (y_ship_pos <= (screen_height - spaceship1_height) && y_ship_pos >= game_score_height){ | 
| Noximilien | 13:5c3dc6e827c2 | 235 | if(y_dir.read() > 0.6f){ | 
| Noximilien | 13:5c3dc6e827c2 | 236 | y_ship_pos -= ship_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 237 | } | 
| Noximilien | 13:5c3dc6e827c2 | 238 | else if(y_dir.read() < 0.4f){ | 
| Noximilien | 13:5c3dc6e827c2 | 239 | y_ship_pos += ship_speed; | 
| Noximilien | 13:5c3dc6e827c2 | 240 | } | 
| Noximilien | 13:5c3dc6e827c2 | 241 | } | 
| Noximilien | 15:0145c5f0bea1 | 242 | else if (y_ship_pos >= (screen_height - spaceship1_height)){ //Limits for y direction border IMPROVE IF POSSIBLE. | 
| Noximilien | 15:0145c5f0bea1 | 243 | y_ship_pos = screen_height - spaceship1_height; | 
| Noximilien | 14:e8de27c4d0d4 | 244 | } | 
| Noximilien | 15:0145c5f0bea1 | 245 | else if (y_ship_pos < game_score_height){ | 
| Noximilien | 15:0145c5f0bea1 | 246 | y_ship_pos = game_score_height; | 
| Noximilien | 14:e8de27c4d0d4 | 247 | } | 
| Noximilien | 13:5c3dc6e827c2 | 248 | } | 
| Noximilien | 13:5c3dc6e827c2 | 249 | |
| Noximilien | 14:e8de27c4d0d4 | 250 | void highScore(){ | 
| Noximilien | 14:e8de27c4d0d4 | 251 | char buffer[4]; | 
| Noximilien | 14:e8de27c4d0d4 | 252 | sprintf(buffer," Score: %i",game_score); | 
| Noximilien | 14:e8de27c4d0d4 | 253 | //printf(buffer); | 
| Noximilien | 14:e8de27c4d0d4 | 254 | lcd.printString(buffer,0,0); | 
| Noximilien | 14:e8de27c4d0d4 | 255 | } | 
| Noximilien | 13:5c3dc6e827c2 | 256 | |
| Noximilien | 4:02c63aaa2df9 | 257 | bool Game::updateAndDraw() { | 
| Noximilien | 6:100b46be4bea | 258 | |
| Noximilien | 6:100b46be4bea | 259 | shipMovment(); | 
| Noximilien | 7:42376925945c | 260 | |
| Noximilien | 6:100b46be4bea | 261 | if (gamepad.check_event(gamepad.B_PRESSED)){ | 
| Noximilien | 9:5ad5501c702e | 262 | fireNewBlast(); | 
| Noximilien | 6:100b46be4bea | 263 | } | 
| Noximilien | 11:cf2ba52e8b7e | 264 | if (small_star_delay == small_star_delay_max){ | 
| Noximilien | 11:cf2ba52e8b7e | 265 | //This is dealy between small stars generation. | 
| Noximilien | 11:cf2ba52e8b7e | 266 | newSmallStarFlies(); | 
| Noximilien | 11:cf2ba52e8b7e | 267 | newMediumStarFlies(); | 
| Noximilien | 12:bfe3a3deaac3 | 268 | spawnNewEnemy(); | 
| Noximilien | 12:bfe3a3deaac3 | 269 | |
| Noximilien | 11:cf2ba52e8b7e | 270 | small_star_delay = 0; | 
| Noximilien | 10:f02413ae09fe | 271 | } | 
| Noximilien | 10:f02413ae09fe | 272 | else { | 
| Noximilien | 11:cf2ba52e8b7e | 273 | small_star_delay += 1; | 
| Noximilien | 10:f02413ae09fe | 274 | } | 
| Noximilien | 7:42376925945c | 275 | |
| Noximilien | 9:5ad5501c702e | 276 | updateAndDrawBlasts(); | 
| Noximilien | 11:cf2ba52e8b7e | 277 | updateAndDrawSmallStars(); | 
| Noximilien | 11:cf2ba52e8b7e | 278 | updateAndDrawMediumStars(); | 
| Noximilien | 12:bfe3a3deaac3 | 279 | updateAndDrawEnemies(); | 
| Noximilien | 12:bfe3a3deaac3 | 280 | collideEnemiesAndBlasts(); | 
| Noximilien | 14:e8de27c4d0d4 | 281 | highScore(); | 
| Noximilien | 5:2b9181bc5c89 | 282 | |
| Noximilien | 9:5ad5501c702e | 283 | lcd.drawSpriteOnTop(x_ship_pos, y_ship_pos, spaceship1_width, spaceship1_height, (int *)spaceShip1); | 
| Noximilien | 5:2b9181bc5c89 | 284 | /*char buffer[4]; | 
| Noximilien | 5:2b9181bc5c89 | 285 | sprintf(buffer,"%i\n",(int)(x_dir.read()*84)); | 
| Noximilien | 5:2b9181bc5c89 | 286 | printf(buffer);*/ | 
| Noximilien | 3:10918b0f7a7d | 287 | |
| Noximilien | 4:02c63aaa2df9 | 288 | bool want_to_pause = false; | 
| Noximilien | 4:02c63aaa2df9 | 289 | if (gamepad.check_event(gamepad.START_PRESSED)){ | 
| Noximilien | 7:42376925945c | 290 | |
| Noximilien | 4:02c63aaa2df9 | 291 | want_to_pause = true; | 
| Noximilien | 4:02c63aaa2df9 | 292 | } | 
| Noximilien | 4:02c63aaa2df9 | 293 | return want_to_pause; | 
| Noximilien | 13:5c3dc6e827c2 | 294 | } | 
