ELEC2645 (2018/19) / Mbed 2 deprecated el17set_

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }