ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Fri Apr 12 18:10:11 2019 +0000
Revision:
37:4d525a37d5d2
Parent:
36:203ec93b4cc7
Child:
38:55bb9da08a52
started using structs in Level1 class to build level, far more efficient and presenetable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17arm 29:d85886364643 1 #include "Gameengine.h"
el17arm 29:d85886364643 2
el17arm 29:d85886364643 3 Gameengine::Gameengine()
el17arm 29:d85886364643 4 {
el17arm 29:d85886364643 5 _turn_flag = 0;
el17arm 29:d85886364643 6 _counter =0;
el17arm 29:d85886364643 7 }
el17arm 29:d85886364643 8
el17arm 29:d85886364643 9 Gameengine::~Gameengine()
el17arm 29:d85886364643 10 {
el17arm 29:d85886364643 11 }
el17arm 29:d85886364643 12
el17arm 29:d85886364643 13 void Gameengine::game_init()
el17arm 29:d85886364643 14 {
el17arm 29:d85886364643 15 _level_select = 1;
el17arm 33:023f57d52b1c 16 _sprites.miner_init(3, 33);
el17arm 33:023f57d52b1c 17 _sprites.enemy_init(1, 22, 42, 40);
el17arm 33:023f57d52b1c 18 _sprites.enemy_init(0, 22, 20, 40);
el17arm 29:d85886364643 19 _lives = 3;
el17arm 29:d85886364643 20 }
el17arm 29:d85886364643 21
el17arm 37:4d525a37d5d2 22 void Gameengine::get_miner_pos()
el17arm 29:d85886364643 23 {
el17arm 37:4d525a37d5d2 24 Vector2D p = _sprites.get_pos();
el17arm 37:4d525a37d5d2 25 }
el17arm 29:d85886364643 26
el17arm 29:d85886364643 27 void Gameengine::read_direction(Gamepad &pad)
el17arm 29:d85886364643 28 {
el17arm 29:d85886364643 29 _d = pad.get_direction();
el17arm 29:d85886364643 30 }
el17arm 29:d85886364643 31
el17arm 29:d85886364643 32 void Gameengine::update(N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 33 {
el17arm 29:d85886364643 34 t.start();
el17arm 29:d85886364643 35 read_direction(pad);
el17arm 37:4d525a37d5d2 36 get_miner_pos();
el17arm 33:023f57d52b1c 37 _sprites.miner_move(_d, lcd);
el17arm 33:023f57d52b1c 38 _sprites.miner_gravity(lcd);
el17arm 33:023f57d52b1c 39 _sprites.miner_jump(lcd, pad);
el17arm 33:023f57d52b1c 40 _sprites.miner_land(lcd);
el17arm 29:d85886364643 41 lose_life(lcd);
el17arm 29:d85886364643 42 game_over();
el17arm 29:d85886364643 43 next_level(lcd);
el17arm 34:c5a042973e0c 44
el17arm 33:023f57d52b1c 45 _sprites.enemy_move(0, 0.5, lcd);
el17arm 33:023f57d52b1c 46 _sprites.enemy_move(1, 1, lcd);
el17arm 34:c5a042973e0c 47
el17arm 29:d85886364643 48 }
el17arm 29:d85886364643 49
el17arm 37:4d525a37d5d2 50 void Gameengine::draw(N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 51 {
el17arm 29:d85886364643 52 if (_level_select == 1) {
el17arm 34:c5a042973e0c 53
el17arm 37:4d525a37d5d2 54 _l1.trap_pos();
el17arm 37:4d525a37d5d2 55 _l1.key_pos();
el17arm 33:023f57d52b1c 56 _sprites.enemy_collision(0);
el17arm 33:023f57d52b1c 57 _sprites.enemy_collision(1);
el17arm 33:023f57d52b1c 58 _sprites.miner_draw(lcd);
el17arm 29:d85886364643 59 _l1.level_platforms(lcd);
el17arm 29:d85886364643 60 _l1.soft_blocks(lcd);
el17arm 36:203ec93b4cc7 61 _sprites.blocks(_d, 1,49,36, lcd);
el17arm 36:203ec93b4cc7 62 _sprites.blocks(_d, 0,42,22, lcd);
el17arm 34:c5a042973e0c 63 _sprites.keys_collected();
el17arm 37:4d525a37d5d2 64 key_draw(lcd, pad);
el17arm 29:d85886364643 65
el17arm 29:d85886364643 66 }
el17arm 29:d85886364643 67 if(_level_select == 2) {
el17arm 29:d85886364643 68
el17arm 33:023f57d52b1c 69 _sprites.miner_draw(lcd);
el17arm 29:d85886364643 70 lcd.drawLine(0,47,83,47,1);
el17arm 29:d85886364643 71 //printf("level 2 time = %f \n", t.read());
el17arm 29:d85886364643 72 }
el17arm 29:d85886364643 73 }
el17arm 29:d85886364643 74
el17arm 33:023f57d52b1c 75 bool Gameengine::enemy_death()
el17arm 33:023f57d52b1c 76 {
el17arm 33:023f57d52b1c 77 if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) ||
el17arm 34:c5a042973e0c 78 _sprites.enemy_collision(2) || _sprites.enemy_collision(3))
el17arm 33:023f57d52b1c 79
el17arm 33:023f57d52b1c 80 return true;
el17arm 33:023f57d52b1c 81 else {
el17arm 33:023f57d52b1c 82 return false;
el17arm 33:023f57d52b1c 83 }
el17arm 33:023f57d52b1c 84 }
el17arm 33:023f57d52b1c 85
el17arm 29:d85886364643 86 void Gameengine::lose_life(N5110 &lcd)
el17arm 29:d85886364643 87 {
el17arm 34:c5a042973e0c 88 if (trap_death(lcd) == true || enemy_death() == true) {
el17arm 29:d85886364643 89 _lives--;
el17arm 33:023f57d52b1c 90 _sprites.miner_init(3, 33);
el17arm 29:d85886364643 91 wait(1);
el17arm 29:d85886364643 92 }
el17arm 29:d85886364643 93 }
el17arm 29:d85886364643 94
el17arm 29:d85886364643 95 bool Gameengine::game_over()
el17arm 29:d85886364643 96 {
el17arm 29:d85886364643 97 if(_lives == 0 || t.read() > 60) {
el17arm 29:d85886364643 98 t.stop();
el17arm 29:d85886364643 99 return true;
el17arm 29:d85886364643 100 } else {
el17arm 29:d85886364643 101 return false;
el17arm 29:d85886364643 102 }
el17arm 29:d85886364643 103 }
el17arm 29:d85886364643 104
el17arm 29:d85886364643 105 void Gameengine::next_level(N5110 &lcd)
el17arm 29:d85886364643 106 {
el17arm 29:d85886364643 107 if(_l1.level1_exit(lcd) == true) {
el17arm 29:d85886364643 108 t.stop();
el17arm 29:d85886364643 109 _level_select = 2;
el17arm 33:023f57d52b1c 110 _sprites.miner_init(3,0);
el17arm 29:d85886364643 111 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 29:d85886364643 112 }
el17arm 34:c5a042973e0c 113 }
el17arm 34:c5a042973e0c 114
el17arm 34:c5a042973e0c 115 bool Gameengine::trap_death(N5110 &lcd)
el17arm 34:c5a042973e0c 116 {
el17arm 37:4d525a37d5d2 117 if(_sprites.trap (_l1.trap1.tx, _l1.trap1.ty, lcd) ||
el17arm 37:4d525a37d5d2 118 _sprites.trap(_l1.trap2.tx, _l1.trap2.ty, lcd) ||
el17arm 37:4d525a37d5d2 119 _sprites.trap(_l1.trap3.tx, _l1.trap3.ty, lcd) ||
el17arm 37:4d525a37d5d2 120 _sprites.trap(_l1.trap4.tx, _l1.trap4.ty, lcd)) {
el17arm 34:c5a042973e0c 121 return true;
el17arm 34:c5a042973e0c 122 } else {
el17arm 34:c5a042973e0c 123 return false;
el17arm 34:c5a042973e0c 124 }
el17arm 34:c5a042973e0c 125 }
el17arm 34:c5a042973e0c 126
el17arm 37:4d525a37d5d2 127 void Gameengine::key_draw(N5110 &lcd, Gamepad &pad)
el17arm 37:4d525a37d5d2 128 {
el17arm 37:4d525a37d5d2 129 printf(" key1 = %d \n", _l1.key1.k);
el17arm 37:4d525a37d5d2 130 _sprites.key_collect(_l1.key1.k, _l1.key1.kx, _l1.key1.ky, lcd, pad);
el17arm 37:4d525a37d5d2 131 //_sprites.key_collect(1, _l1.key2.kx, _l1.key2.ky, lcd, pad);
el17arm 37:4d525a37d5d2 132 //_sprites.key_collect(2, 40, 6, lcd, pad);
el17arm 37:4d525a37d5d2 133 //_sprites.key_collect(3, 62, 6, lcd, pad);
el17arm 37:4d525a37d5d2 134 //_sprites.key_collect(4, 75, 0, lcd, pad);
el17arm 37:4d525a37d5d2 135 }