ELEC2645 (2018/19) / Mbed 2 deprecated el17set_

Dependencies:   mbed

Committer:
S_Tingle
Date:
Thu May 09 12:15:50 2019 +0000
Revision:
23:5e8a435e568f
Parent:
22:8e38efeae0c9
Child:
24:7770c7f27cdc
normal 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::drawSprite(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 61 {
S_Tingle 22:8e38efeae0c9 62 // draws maze //
S_Tingle 22:8e38efeae0c9 63 maze.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 64
S_Tingle 22:8e38efeae0c9 65 // draws all coins //
S_Tingle 22:8e38efeae0c9 66 coin1.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 67 coin2.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 68 coin3.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 69 coin4.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 70 coin5.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 71 coin6.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 72 coin7.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 73 coin8.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 74 coin9.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 75 coin10.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 76 coin11.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 77 coin12.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 78 coin13.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 79
S_Tingle 22:8e38efeae0c9 80 // draws all enemies //
S_Tingle 22:8e38efeae0c9 81 enemyA.drawSpriteA(lcd);
S_Tingle 22:8e38efeae0c9 82 enemy1.drawSprite1(lcd);
S_Tingle 22:8e38efeae0c9 83 enemyB.drawSpriteB(lcd);
S_Tingle 22:8e38efeae0c9 84 enemy2.drawSprite2(lcd);
S_Tingle 22:8e38efeae0c9 85 enemyC.drawSpriteC(lcd);
S_Tingle 22:8e38efeae0c9 86 smiley.drawSprite(lcd);
S_Tingle 21:7d4827af00d6 87 }
S_Tingle 21:7d4827af00d6 88
S_Tingle 22:8e38efeae0c9 89 void Game::movement(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 90 {
S_Tingle 22:8e38efeae0c9 91 // all sprite movement //
S_Tingle 22:8e38efeae0c9 92 smiley.movement(dir, lcd);
S_Tingle 22:8e38efeae0c9 93 enemyA.movementA(lcd);
S_Tingle 22:8e38efeae0c9 94 enemy1.movement1(lcd);
S_Tingle 22:8e38efeae0c9 95 enemyB.movementB(lcd);
S_Tingle 22:8e38efeae0c9 96 enemy2.movement2(lcd);
S_Tingle 22:8e38efeae0c9 97 enemyC.movementC(lcd);
S_Tingle 15:a080c64cf301 98 }
S_Tingle 15:a080c64cf301 99
S_Tingle 22:8e38efeae0c9 100 void Game::collect(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 101 {
S_Tingle 22:8e38efeae0c9 102 // detects whether the coin needs to be respawned //
S_Tingle 22:8e38efeae0c9 103 int x = smiley.get_x_char();
S_Tingle 22:8e38efeae0c9 104 int y = smiley.get_y_char();
S_Tingle 22:8e38efeae0c9 105 coin1.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 106 coin2.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 107 coin3.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 108 coin4.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 109 coin5.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 110 coin6.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 111 coin7.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 112 coin8.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 113 coin9.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 114 coin10.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 115 coin11.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 116 coin12.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 117 coin13.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 118
S_Tingle 22:8e38efeae0c9 119 }
S_Tingle 22:8e38efeae0c9 120
S_Tingle 22:8e38efeae0c9 121 void Game::win(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 122 {
S_Tingle 22:8e38efeae0c9 123 // detects a win and displays win screen //
S_Tingle 22:8e38efeae0c9 124 if (coin == 1) {
S_Tingle 22:8e38efeae0c9 125 lcd.clear();
S_Tingle 22:8e38efeae0c9 126 lcd.printString("YOU",30,2);
S_Tingle 22:8e38efeae0c9 127 lcd.printString("WIN",30,3);
S_Tingle 22:8e38efeae0c9 128 lcd.printString(":)",30,3);
S_Tingle 22:8e38efeae0c9 129 lcd.refresh();
S_Tingle 22:8e38efeae0c9 130 wait(2);
S_Tingle 22:8e38efeae0c9 131 }
S_Tingle 16:37d98c281eb3 132 }
S_Tingle 16:37d98c281eb3 133
S_Tingle 22:8e38efeae0c9 134 void Game::damage(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 135 {
S_Tingle 22:8e38efeae0c9 136 // if collision with enemy detected -1 live //
S_Tingle 22:8e38efeae0c9 137 int x = smiley.get_x_char();
S_Tingle 22:8e38efeae0c9 138 int y = smiley.get_y_char();
S_Tingle 22:8e38efeae0c9 139 if (enemyA.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 140 enemy1.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 141 enemyB.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 142 enemy2.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 143 enemyC.collidePlayer(x, y, pad) == true) {
S_Tingle 22:8e38efeae0c9 144 _lives--;
S_Tingle 22:8e38efeae0c9 145 wait(0.1);
S_Tingle 22:8e38efeae0c9 146 }
S_Tingle 16:37d98c281eb3 147 }
S_Tingle 16:37d98c281eb3 148
S_Tingle 22:8e38efeae0c9 149 void Game::death(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 150 {
S_Tingle 22:8e38efeae0c9 151 // detects a loss and displays game over screen //
S_Tingle 22:8e38efeae0c9 152 if (_lives == 0) {
S_Tingle 22:8e38efeae0c9 153 lcd.clear();
S_Tingle 22:8e38efeae0c9 154 lcd.printString("PUT",30,1);
S_Tingle 22:8e38efeae0c9 155 lcd.printString("ON",30,2);
S_Tingle 22:8e38efeae0c9 156 lcd.printString("TIMEOUT",30,3);
S_Tingle 22:8e38efeae0c9 157 lcd.printString(":(",30,4);
S_Tingle 22:8e38efeae0c9 158 lcd.refresh();
S_Tingle 22:8e38efeae0c9 159 wait(2);
S_Tingle 22:8e38efeae0c9 160 }
S_Tingle 19:1073cc64cb0b 161 }
S_Tingle 19:1073cc64cb0b 162
S_Tingle 22:8e38efeae0c9 163 void Game::UI(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 164 {
S_Tingle 22:8e38efeae0c9 165 // function to call on main menu in main //
S_Tingle 22:8e38efeae0c9 166 menu.main(lcd,pad);
S_Tingle 5:e6cb6fda5b37 167 }