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
Game/Game.cpp@22:8e38efeae0c9, 2019-05-09 (annotated)
- Committer:
- S_Tingle
- Date:
- Thu May 09 12:10:56 2019 +0000
- Revision:
- 22:8e38efeae0c9
- Parent:
- 21:7d4827af00d6
- Child:
- 23:5e8a435e568f
working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
S_Tingle | 5:e6cb6fda5b37 | 1 | #include "Game.h" |
S_Tingle | 5:e6cb6fda5b37 | 2 | |
S_Tingle | 22:8e38efeae0c9 | 3 | Game::Game() |
S_Tingle | 22:8e38efeae0c9 | 4 | { |
S_Tingle | 21:7d4827af00d6 | 5 | |
S_Tingle | 5:e6cb6fda5b37 | 6 | } |
S_Tingle | 5:e6cb6fda5b37 | 7 | |
S_Tingle | 22:8e38efeae0c9 | 8 | Game::~Game() |
S_Tingle | 22:8e38efeae0c9 | 9 | { |
S_Tingle | 22:8e38efeae0c9 | 10 | |
S_Tingle | 5:e6cb6fda5b37 | 11 | } |
S_Tingle | 5:e6cb6fda5b37 | 12 | |
S_Tingle | 22:8e38efeae0c9 | 13 | void Game::init() |
S_Tingle | 22:8e38efeae0c9 | 14 | { |
S_Tingle | 22:8e38efeae0c9 | 15 | // set character coordinates and health // |
S_Tingle | 22:8e38efeae0c9 | 16 | smiley.init(x, y); |
S_Tingle | 22:8e38efeae0c9 | 17 | _lives = 10; |
S_Tingle | 22:8e38efeae0c9 | 18 | |
S_Tingle | 22:8e38efeae0c9 | 19 | // initialise all coin coordinates // |
S_Tingle | 22:8e38efeae0c9 | 20 | coin1.init(41, 42); |
S_Tingle | 22:8e38efeae0c9 | 21 | coin2.init(41, 23); |
S_Tingle | 22:8e38efeae0c9 | 22 | coin3.init(78, 42); |
S_Tingle | 22:8e38efeae0c9 | 23 | coin4.init(22, 34); |
S_Tingle | 22:8e38efeae0c9 | 24 | coin5.init(22, 12); |
S_Tingle | 22:8e38efeae0c9 | 25 | coin6.init(59, 12); |
S_Tingle | 22:8e38efeae0c9 | 26 | coin7.init(59, 34); |
S_Tingle | 22:8e38efeae0c9 | 27 | coin8.init(78, 14); |
S_Tingle | 22:8e38efeae0c9 | 28 | coin9.init(78, 4); |
S_Tingle | 22:8e38efeae0c9 | 29 | coin10.init(41, 4); |
S_Tingle | 22:8e38efeae0c9 | 30 | coin11.init(4, 4); |
S_Tingle | 22:8e38efeae0c9 | 31 | coin12.init(78, 23); |
S_Tingle | 22:8e38efeae0c9 | 32 | coin13.init(13, 14); |
S_Tingle | 22:8e38efeae0c9 | 33 | |
S_Tingle | 22:8e38efeae0c9 | 34 | // initialise all enemy coordinates // |
S_Tingle | 22:8e38efeae0c9 | 35 | enemyA.init(28, 18); |
S_Tingle | 22:8e38efeae0c9 | 36 | enemy1.init(58, 31); |
S_Tingle | 22:8e38efeae0c9 | 37 | enemyB.init(67, 20); |
S_Tingle | 22:8e38efeae0c9 | 38 | enemy2.init(67, 12); |
S_Tingle | 22:8e38efeae0c9 | 39 | enemyC.init(1, 1); |
S_Tingle | 5:e6cb6fda5b37 | 40 | } |
S_Tingle | 5:e6cb6fda5b37 | 41 | |
S_Tingle | 22:8e38efeae0c9 | 42 | int Game::get_lives() |
S_Tingle | 22:8e38efeae0c9 | 43 | { |
S_Tingle | 22:8e38efeae0c9 | 44 | return _lives; |
S_Tingle | 22:8e38efeae0c9 | 45 | } |
S_Tingle | 22:8e38efeae0c9 | 46 | |
S_Tingle | 22:8e38efeae0c9 | 47 | void Game::direc(Gamepad &pad) |
S_Tingle | 22:8e38efeae0c9 | 48 | { |
S_Tingle | 22:8e38efeae0c9 | 49 | dir = pad.get_direction(); |
S_Tingle | 22:8e38efeae0c9 | 50 | } |
S_Tingle | 22:8e38efeae0c9 | 51 | |
S_Tingle | 22:8e38efeae0c9 | 52 | void Game::display_health(N5110 &lcd) |
S_Tingle | 22:8e38efeae0c9 | 53 | { |
S_Tingle | 22:8e38efeae0c9 | 54 | // displays updating health value on screen // |
S_Tingle | 22:8e38efeae0c9 | 55 | char buffer[14]; |
S_Tingle | 22:8e38efeae0c9 | 56 | sprintf(buffer,"%d",_lives); |
S_Tingle | 22:8e38efeae0c9 | 57 | lcd.printString(buffer,0,5); |
S_Tingle | 17:ce6b54422113 | 58 | } |
S_Tingle | 17:ce6b54422113 | 59 | |
S_Tingle | 22:8e38efeae0c9 | 60 | /*void Game::display_coins(N5110 &lcd) |
S_Tingle | 22:8e38efeae0c9 | 61 | { |
S_Tingle | 22:8e38efeae0c9 | 62 | int coins = coin0.get_coins(); |
S_Tingle | 22:8e38efeae0c9 | 63 | char buffer[14]; |
S_Tingle | 22:8e38efeae0c9 | 64 | sprintf(buffer,"%d",coins); |
S_Tingle | 22:8e38efeae0c9 | 65 | lcd.printString(buffer,0,4); |
S_Tingle | 22:8e38efeae0c9 | 66 | } |
S_Tingle | 22:8e38efeae0c9 | 67 | */ |
S_Tingle | 22:8e38efeae0c9 | 68 | |
S_Tingle | 22:8e38efeae0c9 | 69 | void Game::drawSprite(N5110 &lcd) |
S_Tingle | 22:8e38efeae0c9 | 70 | { |
S_Tingle | 22:8e38efeae0c9 | 71 | // draws maze // |
S_Tingle | 22:8e38efeae0c9 | 72 | maze.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 73 | |
S_Tingle | 22:8e38efeae0c9 | 74 | // draws all coins // |
S_Tingle | 22:8e38efeae0c9 | 75 | coin1.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 76 | coin2.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 77 | coin3.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 78 | coin4.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 79 | coin5.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 80 | coin6.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 81 | coin7.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 82 | coin8.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 83 | coin9.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 84 | coin10.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 85 | coin11.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 86 | coin12.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 87 | coin13.drawSprite(lcd); |
S_Tingle | 22:8e38efeae0c9 | 88 | |
S_Tingle | 22:8e38efeae0c9 | 89 | // draws all enemies // |
S_Tingle | 22:8e38efeae0c9 | 90 | enemyA.drawSpriteA(lcd); |
S_Tingle | 22:8e38efeae0c9 | 91 | enemy1.drawSprite1(lcd); |
S_Tingle | 22:8e38efeae0c9 | 92 | enemyB.drawSpriteB(lcd); |
S_Tingle | 22:8e38efeae0c9 | 93 | enemy2.drawSprite2(lcd); |
S_Tingle | 22:8e38efeae0c9 | 94 | enemyC.drawSpriteC(lcd); |
S_Tingle | 22:8e38efeae0c9 | 95 | smiley.drawSprite(lcd); |
S_Tingle | 21:7d4827af00d6 | 96 | } |
S_Tingle | 21:7d4827af00d6 | 97 | |
S_Tingle | 22:8e38efeae0c9 | 98 | void Game::movement(N5110 &lcd, Gamepad &pad) |
S_Tingle | 22:8e38efeae0c9 | 99 | { |
S_Tingle | 22:8e38efeae0c9 | 100 | // all sprite movement // |
S_Tingle | 22:8e38efeae0c9 | 101 | smiley.movement(dir, lcd); |
S_Tingle | 22:8e38efeae0c9 | 102 | enemyA.movementA(lcd); |
S_Tingle | 22:8e38efeae0c9 | 103 | enemy1.movement1(lcd); |
S_Tingle | 22:8e38efeae0c9 | 104 | enemyB.movementB(lcd); |
S_Tingle | 22:8e38efeae0c9 | 105 | enemy2.movement2(lcd); |
S_Tingle | 22:8e38efeae0c9 | 106 | enemyC.movementC(lcd); |
S_Tingle | 15:a080c64cf301 | 107 | } |
S_Tingle | 15:a080c64cf301 | 108 | |
S_Tingle | 22:8e38efeae0c9 | 109 | void Game::collect(N5110 &lcd, Gamepad &pad) |
S_Tingle | 22:8e38efeae0c9 | 110 | { |
S_Tingle | 22:8e38efeae0c9 | 111 | // detects whether the coin needs to be respawned // |
S_Tingle | 22:8e38efeae0c9 | 112 | int x = smiley.get_x_char(); |
S_Tingle | 22:8e38efeae0c9 | 113 | int y = smiley.get_y_char(); |
S_Tingle | 22:8e38efeae0c9 | 114 | coin1.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 115 | coin2.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 116 | coin3.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 117 | coin4.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 118 | coin5.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 119 | coin6.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 120 | coin7.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 121 | coin8.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 122 | coin9.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 123 | coin10.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 124 | coin11.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 125 | coin12.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 126 | coin13.spawn(x, y, lcd, pad); |
S_Tingle | 22:8e38efeae0c9 | 127 | |
S_Tingle | 22:8e38efeae0c9 | 128 | } |
S_Tingle | 22:8e38efeae0c9 | 129 | |
S_Tingle | 22:8e38efeae0c9 | 130 | void Game::win(N5110 &lcd) |
S_Tingle | 22:8e38efeae0c9 | 131 | { |
S_Tingle | 22:8e38efeae0c9 | 132 | // detects a win and displays win screen // |
S_Tingle | 22:8e38efeae0c9 | 133 | if (coin == 1) { |
S_Tingle | 22:8e38efeae0c9 | 134 | lcd.clear(); |
S_Tingle | 22:8e38efeae0c9 | 135 | lcd.printString("YOU",30,2); |
S_Tingle | 22:8e38efeae0c9 | 136 | lcd.printString("WIN",30,3); |
S_Tingle | 22:8e38efeae0c9 | 137 | lcd.printString(":)",30,3); |
S_Tingle | 22:8e38efeae0c9 | 138 | lcd.refresh(); |
S_Tingle | 22:8e38efeae0c9 | 139 | wait(2); |
S_Tingle | 22:8e38efeae0c9 | 140 | } |
S_Tingle | 16:37d98c281eb3 | 141 | } |
S_Tingle | 16:37d98c281eb3 | 142 | |
S_Tingle | 22:8e38efeae0c9 | 143 | void Game::damage(N5110 &lcd, Gamepad &pad) |
S_Tingle | 22:8e38efeae0c9 | 144 | { |
S_Tingle | 22:8e38efeae0c9 | 145 | // if collision with enemy detected -1 live // |
S_Tingle | 22:8e38efeae0c9 | 146 | int x = smiley.get_x_char(); |
S_Tingle | 22:8e38efeae0c9 | 147 | int y = smiley.get_y_char(); |
S_Tingle | 22:8e38efeae0c9 | 148 | if (enemyA.collidePlayer(x, y, pad) == true || |
S_Tingle | 22:8e38efeae0c9 | 149 | enemy1.collidePlayer(x, y, pad) == true || |
S_Tingle | 22:8e38efeae0c9 | 150 | enemyB.collidePlayer(x, y, pad) == true || |
S_Tingle | 22:8e38efeae0c9 | 151 | enemy2.collidePlayer(x, y, pad) == true || |
S_Tingle | 22:8e38efeae0c9 | 152 | enemyC.collidePlayer(x, y, pad) == true) { |
S_Tingle | 22:8e38efeae0c9 | 153 | _lives--; |
S_Tingle | 22:8e38efeae0c9 | 154 | wait(0.1); |
S_Tingle | 22:8e38efeae0c9 | 155 | } |
S_Tingle | 16:37d98c281eb3 | 156 | } |
S_Tingle | 16:37d98c281eb3 | 157 | |
S_Tingle | 22:8e38efeae0c9 | 158 | void Game::death(N5110 &lcd) |
S_Tingle | 22:8e38efeae0c9 | 159 | { |
S_Tingle | 22:8e38efeae0c9 | 160 | // detects a loss and displays game over screen // |
S_Tingle | 22:8e38efeae0c9 | 161 | if (_lives == 0) { |
S_Tingle | 22:8e38efeae0c9 | 162 | lcd.clear(); |
S_Tingle | 22:8e38efeae0c9 | 163 | lcd.printString("PUT",30,1); |
S_Tingle | 22:8e38efeae0c9 | 164 | lcd.printString("ON",30,2); |
S_Tingle | 22:8e38efeae0c9 | 165 | lcd.printString("TIMEOUT",30,3); |
S_Tingle | 22:8e38efeae0c9 | 166 | lcd.printString(":(",30,4); |
S_Tingle | 22:8e38efeae0c9 | 167 | lcd.refresh(); |
S_Tingle | 22:8e38efeae0c9 | 168 | wait(2); |
S_Tingle | 22:8e38efeae0c9 | 169 | } |
S_Tingle | 19:1073cc64cb0b | 170 | } |
S_Tingle | 19:1073cc64cb0b | 171 | |
S_Tingle | 22:8e38efeae0c9 | 172 | void Game::UI(N5110 &lcd, Gamepad &pad) |
S_Tingle | 22:8e38efeae0c9 | 173 | { |
S_Tingle | 22:8e38efeae0c9 | 174 | // function to call on main menu in main // |
S_Tingle | 22:8e38efeae0c9 | 175 | menu.main(lcd,pad); |
S_Tingle | 5:e6cb6fda5b37 | 176 | } |