ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Mon Apr 01 23:55:24 2019 +0000
Revision:
19:4789cb4ca550
Parent:
18:ff0a53dcb862
Child:
20:78bd235f8caa
Timer added, there is now a 60 second time limit to complete level.; ; Game over screen added, will appear if lives are zero or timer runs out

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17arm 14:dc3524d11921 1 #include "Gameengine.h"
el17arm 4:b92da6a09c8b 2
el17arm 14:dc3524d11921 3 Gameengine::Gameengine()
el17arm 4:b92da6a09c8b 4 {
el17arm 4:b92da6a09c8b 5 }
el17arm 4:b92da6a09c8b 6
el17arm 14:dc3524d11921 7 Gameengine::~Gameengine()
el17arm 4:b92da6a09c8b 8 {
el17arm 4:b92da6a09c8b 9 }
el17arm 14:dc3524d11921 10
el17arm 15:2bda80896a84 11 void Gameengine::game_init()
el17arm 15:2bda80896a84 12 {
el17arm 15:2bda80896a84 13 _level_select = 1;
el17arm 15:2bda80896a84 14 _miner.miner_init(3, 33);
el17arm 18:ff0a53dcb862 15 _lives = 3;
el17arm 15:2bda80896a84 16 }
el17arm 15:2bda80896a84 17
el17arm 15:2bda80896a84 18 void Gameengine::read_direction(Gamepad &pad)
el17arm 15:2bda80896a84 19 {
el17arm 15:2bda80896a84 20 _d = pad.get_direction();
el17arm 15:2bda80896a84 21 }
el17arm 15:2bda80896a84 22
el17arm 15:2bda80896a84 23 void Gameengine::update(N5110 &lcd, Gamepad &pad)
el17arm 19:4789cb4ca550 24 {
el17arm 19:4789cb4ca550 25 t.start();
el17arm 19:4789cb4ca550 26 read_direction(pad);
el17arm 15:2bda80896a84 27 _miner.miner_move(_d);
el17arm 15:2bda80896a84 28 _miner.miner_gravity(lcd);
el17arm 15:2bda80896a84 29 _miner.miner_jump(lcd, pad);
el17arm 15:2bda80896a84 30 _miner.miner_land(lcd);
el17arm 18:ff0a53dcb862 31 lose_life(lcd);
el17arm 19:4789cb4ca550 32 game_over();
el17arm 15:2bda80896a84 33 }
el17arm 15:2bda80896a84 34
el17arm 15:2bda80896a84 35 void Gameengine::draw(N5110 &lcd)
el17arm 15:2bda80896a84 36 {
el17arm 18:ff0a53dcb862 37 if (_level_select == 1) {
el17arm 19:4789cb4ca550 38
el17arm 15:2bda80896a84 39 _miner.miner_draw(lcd);
el17arm 18:ff0a53dcb862 40 _l1.level_platforms(lcd);
el17arm 18:ff0a53dcb862 41 _l1.soft_blocks(lcd);
el17arm 18:ff0a53dcb862 42 _l1.solid_blocks(lcd);
el17arm 18:ff0a53dcb862 43 _l1.keys(lcd);
el17arm 18:ff0a53dcb862 44 _l1.keys_collected();
el17arm 18:ff0a53dcb862 45 _l1.spikes(lcd);
el17arm 15:2bda80896a84 46 }
el17arm 15:2bda80896a84 47 }
el17arm 18:ff0a53dcb862 48
el17arm 18:ff0a53dcb862 49 void Gameengine::lose_life(N5110 &lcd)
el17arm 18:ff0a53dcb862 50 {
el17arm 19:4789cb4ca550 51
el17arm 18:ff0a53dcb862 52 if (_l1.spikes(lcd) == 1) {
el17arm 18:ff0a53dcb862 53 _lives--;
el17arm 18:ff0a53dcb862 54 _miner.miner_init(3, 33);
el17arm 18:ff0a53dcb862 55 wait(0.5);
el17arm 18:ff0a53dcb862 56 }
el17arm 19:4789cb4ca550 57 }
el17arm 19:4789cb4ca550 58
el17arm 19:4789cb4ca550 59 bool Gameengine::game_over()
el17arm 19:4789cb4ca550 60 {
el17arm 19:4789cb4ca550 61 printf("The time taken was %f seconds\n", t.read());
el17arm 19:4789cb4ca550 62 if(_lives == 0 || t.read() > 10){
el17arm 19:4789cb4ca550 63 t.stop();
el17arm 19:4789cb4ca550 64 return true;
el17arm 19:4789cb4ca550 65 } else {
el17arm 19:4789cb4ca550 66 return false;
el17arm 19:4789cb4ca550 67 }
el17arm 18:ff0a53dcb862 68 }