ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Tue Apr 09 21:03:49 2019 +0000
Revision:
28:a38070a1cdcf
reorganised differently (unfinished) returning to previous version but may return to this one still

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17arm 28:a38070a1cdcf 1 #include "Gameengine.h"
el17arm 28:a38070a1cdcf 2
el17arm 28:a38070a1cdcf 3 Gameengine::Gameengine()
el17arm 28:a38070a1cdcf 4 {
el17arm 28:a38070a1cdcf 5 }
el17arm 28:a38070a1cdcf 6
el17arm 28:a38070a1cdcf 7 Gameengine::~Gameengine()
el17arm 28:a38070a1cdcf 8 {
el17arm 28:a38070a1cdcf 9 }
el17arm 28:a38070a1cdcf 10
el17arm 28:a38070a1cdcf 11 void Gameengine::update(N5110 &lcd, Gamepad &pad)
el17arm 28:a38070a1cdcf 12 {
el17arm 28:a38070a1cdcf 13 t.start();
el17arm 28:a38070a1cdcf 14 read_direction(pad);
el17arm 28:a38070a1cdcf 15 _miner.get_pos();
el17arm 28:a38070a1cdcf 16 _miner.miner_move(_d, lcd);
el17arm 28:a38070a1cdcf 17 _miner.miner_gravity(lcd);
el17arm 28:a38070a1cdcf 18 _miner.miner_jump(lcd, pad);
el17arm 28:a38070a1cdcf 19 _miner.miner_land(lcd);
el17arm 28:a38070a1cdcf 20 lose_life(lcd);
el17arm 28:a38070a1cdcf 21 game_over();
el17arm 28:a38070a1cdcf 22 next_level(lcd);
el17arm 28:a38070a1cdcf 23 }
el17arm 28:a38070a1cdcf 24
el17arm 28:a38070a1cdcf 25 void Gameengine::draw(Key _k, N5110 &lcd, Gamepad &pad)
el17arm 28:a38070a1cdcf 26 {
el17arm 28:a38070a1cdcf 27 if (_level_select == 1) {
el17arm 28:a38070a1cdcf 28
el17arm 28:a38070a1cdcf 29 _miner.miner_draw(lcd);
el17arm 28:a38070a1cdcf 30 _l1.level_platforms(lcd);
el17arm 28:a38070a1cdcf 31 _l1.soft_blocks(lcd);
el17arm 28:a38070a1cdcf 32 _l1.solid_blocks(lcd);
el17arm 28:a38070a1cdcf 33 _l1.keys(lcd, pad);
el17arm 28:a38070a1cdcf 34 _l1.keys_collected();
el17arm 28:a38070a1cdcf 35 _l1.traps(lcd);
el17arm 28:a38070a1cdcf 36 _obj.enemy_move(lcd);
el17arm 28:a38070a1cdcf 37 _obj.enemy_collision();
el17arm 28:a38070a1cdcf 38 }
el17arm 28:a38070a1cdcf 39 if(_level_select == 2) {
el17arm 28:a38070a1cdcf 40
el17arm 28:a38070a1cdcf 41 _miner.miner_draw(lcd);
el17arm 28:a38070a1cdcf 42 lcd.drawLine(0,47,83,47,1);
el17arm 28:a38070a1cdcf 43 printf("level 2 time = %f \n", t.read());
el17arm 28:a38070a1cdcf 44 }
el17arm 28:a38070a1cdcf 45 }
el17arm 28:a38070a1cdcf 46
el17arm 28:a38070a1cdcf 47 void Gameengine::read_direction(Gamepad &pad)
el17arm 28:a38070a1cdcf 48 {
el17arm 28:a38070a1cdcf 49 _d = pad.get_direction();
el17arm 28:a38070a1cdcf 50 }
el17arm 28:a38070a1cdcf 51
el17arm 28:a38070a1cdcf 52 void Gameengine::game_init()
el17arm 28:a38070a1cdcf 53 {
el17arm 28:a38070a1cdcf 54 _level_select = 1;
el17arm 28:a38070a1cdcf 55 //enemy_init(20, 78, 40);
el17arm 28:a38070a1cdcf 56 _obj.enemy_init(22, 20, 40);
el17arm 28:a38070a1cdcf 57 _lives = 3;
el17arm 28:a38070a1cdcf 58 }
el17arm 28:a38070a1cdcf 59
el17arm 28:a38070a1cdcf 60 void Gameengine::lose_life(N5110 &lcd)
el17arm 28:a38070a1cdcf 61 {
el17arm 28:a38070a1cdcf 62
el17arm 28:a38070a1cdcf 63 if (_l1.traps(lcd) == 1 || _obj.enemy_collision() == true) {
el17arm 28:a38070a1cdcf 64 _lives--;
el17arm 28:a38070a1cdcf 65 wait(1);
el17arm 28:a38070a1cdcf 66 }
el17arm 28:a38070a1cdcf 67 }
el17arm 28:a38070a1cdcf 68
el17arm 28:a38070a1cdcf 69 bool Gameengine::game_over()
el17arm 28:a38070a1cdcf 70 {
el17arm 28:a38070a1cdcf 71 if(_lives == 0 || t.read() > 60) {
el17arm 28:a38070a1cdcf 72 t.stop();
el17arm 28:a38070a1cdcf 73 return true;
el17arm 28:a38070a1cdcf 74 } else {
el17arm 28:a38070a1cdcf 75 return false;
el17arm 28:a38070a1cdcf 76 }
el17arm 28:a38070a1cdcf 77 }
el17arm 28:a38070a1cdcf 78
el17arm 28:a38070a1cdcf 79 void Gameengine::next_level(N5110 &lcd)
el17arm 28:a38070a1cdcf 80 {
el17arm 28:a38070a1cdcf 81 if(_l1.level1_exit(lcd) == true) {
el17arm 28:a38070a1cdcf 82 t.stop();
el17arm 28:a38070a1cdcf 83 _level_select = 2;
el17arm 28:a38070a1cdcf 84 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 28:a38070a1cdcf 85 }
el17arm 28:a38070a1cdcf 86 }