ELEC2645 (2018/19) / Mbed 2 deprecated el17set_

Dependencies:   mbed

Committer:
S_Tingle
Date:
Thu May 09 14:40:58 2019 +0000
Revision:
26:3652bc2fe3fc
Parent:
25:1d3bf74dddeb
I understand the university's rules on plagiarism. I hereby declare this my own independent work.

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 25:1d3bf74dddeb 16 baby.init(x, y);
S_Tingle 24:7770c7f27cdc 17 _health = 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 26:3652bc2fe3fc 40
S_Tingle 26:3652bc2fe3fc 41 // Reset incrementers //
S_Tingle 26:3652bc2fe3fc 42 enemyA.resetIncrementer();
S_Tingle 26:3652bc2fe3fc 43 enemy1.resetIncrementer();
S_Tingle 26:3652bc2fe3fc 44 enemyB.resetIncrementer();
S_Tingle 26:3652bc2fe3fc 45 enemy2.resetIncrementer();
S_Tingle 26:3652bc2fe3fc 46 enemyC.resetIncrementer();
S_Tingle 5:e6cb6fda5b37 47 }
S_Tingle 5:e6cb6fda5b37 48
S_Tingle 24:7770c7f27cdc 49 int Game::get_health()
S_Tingle 22:8e38efeae0c9 50 {
S_Tingle 24:7770c7f27cdc 51 return _health;
S_Tingle 22:8e38efeae0c9 52 }
S_Tingle 22:8e38efeae0c9 53
S_Tingle 22:8e38efeae0c9 54 void Game::direc(Gamepad &pad)
S_Tingle 22:8e38efeae0c9 55 {
S_Tingle 22:8e38efeae0c9 56 dir = pad.get_direction();
S_Tingle 22:8e38efeae0c9 57 }
S_Tingle 22:8e38efeae0c9 58
S_Tingle 22:8e38efeae0c9 59 void Game::display_health(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 60 {
S_Tingle 22:8e38efeae0c9 61 // displays updating health value on screen //
S_Tingle 22:8e38efeae0c9 62 char buffer[14];
S_Tingle 24:7770c7f27cdc 63 sprintf(buffer,"%d",_health);
S_Tingle 22:8e38efeae0c9 64 lcd.printString(buffer,0,5);
S_Tingle 17:ce6b54422113 65 }
S_Tingle 17:ce6b54422113 66
S_Tingle 22:8e38efeae0c9 67 void Game::drawSprite(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 68 {
S_Tingle 22:8e38efeae0c9 69 // draws maze //
S_Tingle 22:8e38efeae0c9 70 maze.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 71
S_Tingle 22:8e38efeae0c9 72 // draws all coins //
S_Tingle 22:8e38efeae0c9 73 coin1.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 74 coin2.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 75 coin3.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 76 coin4.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 77 coin5.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 78 coin6.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 79 coin7.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 80 coin8.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 81 coin9.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 82 coin10.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 83 coin11.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 84 coin12.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 85 coin13.drawSprite(lcd);
S_Tingle 22:8e38efeae0c9 86
S_Tingle 22:8e38efeae0c9 87 // draws all enemies //
S_Tingle 22:8e38efeae0c9 88 enemyA.drawSpriteA(lcd);
S_Tingle 22:8e38efeae0c9 89 enemy1.drawSprite1(lcd);
S_Tingle 22:8e38efeae0c9 90 enemyB.drawSpriteB(lcd);
S_Tingle 22:8e38efeae0c9 91 enemy2.drawSprite2(lcd);
S_Tingle 22:8e38efeae0c9 92 enemyC.drawSpriteC(lcd);
S_Tingle 26:3652bc2fe3fc 93
S_Tingle 25:1d3bf74dddeb 94 baby.drawSprite(lcd);
S_Tingle 21:7d4827af00d6 95 }
S_Tingle 21:7d4827af00d6 96
S_Tingle 22:8e38efeae0c9 97 void Game::movement(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 98 {
S_Tingle 22:8e38efeae0c9 99 // all sprite movement //
S_Tingle 25:1d3bf74dddeb 100 baby.movement(dir, lcd);
S_Tingle 22:8e38efeae0c9 101 enemyA.movementA(lcd);
S_Tingle 22:8e38efeae0c9 102 enemy1.movement1(lcd);
S_Tingle 22:8e38efeae0c9 103 enemyB.movementB(lcd);
S_Tingle 22:8e38efeae0c9 104 enemy2.movement2(lcd);
S_Tingle 22:8e38efeae0c9 105 enemyC.movementC(lcd);
S_Tingle 15:a080c64cf301 106 }
S_Tingle 15:a080c64cf301 107
S_Tingle 22:8e38efeae0c9 108 void Game::collect(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 109 {
S_Tingle 22:8e38efeae0c9 110 // detects whether the coin needs to be respawned //
S_Tingle 25:1d3bf74dddeb 111 int x = baby.get_x_char();
S_Tingle 25:1d3bf74dddeb 112 int y = baby.get_y_char();
S_Tingle 22:8e38efeae0c9 113 coin1.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 114 coin2.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 115 coin3.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 116 coin4.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 117 coin5.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 118 coin6.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 119 coin7.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 120 coin8.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 121 coin9.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 122 coin10.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 123 coin11.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 124 coin12.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 125 coin13.spawn(x, y, lcd, pad);
S_Tingle 22:8e38efeae0c9 126
S_Tingle 22:8e38efeae0c9 127 }
S_Tingle 22:8e38efeae0c9 128
S_Tingle 22:8e38efeae0c9 129 void Game::win(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 130 {
S_Tingle 22:8e38efeae0c9 131 // detects a win and displays win screen //
S_Tingle 22:8e38efeae0c9 132 if (coin == 1) {
S_Tingle 22:8e38efeae0c9 133 lcd.clear();
S_Tingle 22:8e38efeae0c9 134 lcd.printString("YOU",30,2);
S_Tingle 22:8e38efeae0c9 135 lcd.printString("WIN",30,3);
S_Tingle 22:8e38efeae0c9 136 lcd.printString(":)",30,3);
S_Tingle 22:8e38efeae0c9 137 lcd.refresh();
S_Tingle 22:8e38efeae0c9 138 wait(2);
S_Tingle 22:8e38efeae0c9 139 }
S_Tingle 16:37d98c281eb3 140 }
S_Tingle 16:37d98c281eb3 141
S_Tingle 22:8e38efeae0c9 142 void Game::damage(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 143 {
S_Tingle 22:8e38efeae0c9 144 // if collision with enemy detected -1 live //
S_Tingle 25:1d3bf74dddeb 145 int x = baby.get_x_char();
S_Tingle 25:1d3bf74dddeb 146 int y = baby.get_y_char();
S_Tingle 22:8e38efeae0c9 147 if (enemyA.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 148 enemy1.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 149 enemyB.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 150 enemy2.collidePlayer(x, y, pad) == true ||
S_Tingle 22:8e38efeae0c9 151 enemyC.collidePlayer(x, y, pad) == true) {
S_Tingle 24:7770c7f27cdc 152 _health--;
S_Tingle 22:8e38efeae0c9 153 wait(0.1);
S_Tingle 22:8e38efeae0c9 154 }
S_Tingle 16:37d98c281eb3 155 }
S_Tingle 16:37d98c281eb3 156
S_Tingle 22:8e38efeae0c9 157 void Game::death(N5110 &lcd)
S_Tingle 22:8e38efeae0c9 158 {
S_Tingle 22:8e38efeae0c9 159 // detects a loss and displays game over screen //
S_Tingle 24:7770c7f27cdc 160 if (_health == 0) {
S_Tingle 22:8e38efeae0c9 161 lcd.clear();
S_Tingle 22:8e38efeae0c9 162 lcd.printString("PUT",30,1);
S_Tingle 22:8e38efeae0c9 163 lcd.printString("ON",30,2);
S_Tingle 22:8e38efeae0c9 164 lcd.printString("TIMEOUT",30,3);
S_Tingle 22:8e38efeae0c9 165 lcd.printString(":(",30,4);
S_Tingle 22:8e38efeae0c9 166 lcd.refresh();
S_Tingle 22:8e38efeae0c9 167 wait(2);
S_Tingle 22:8e38efeae0c9 168 }
S_Tingle 19:1073cc64cb0b 169 }
S_Tingle 19:1073cc64cb0b 170
S_Tingle 22:8e38efeae0c9 171 void Game::UI(N5110 &lcd, Gamepad &pad)
S_Tingle 22:8e38efeae0c9 172 {
S_Tingle 22:8e38efeae0c9 173 // function to call on main menu in main //
S_Tingle 22:8e38efeae0c9 174 menu.main(lcd,pad);
S_Tingle 5:e6cb6fda5b37 175 }