ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Thu Apr 11 21:29:48 2019 +0000
Revision:
34:c5a042973e0c
Parent:
33:023f57d52b1c
Child:
35:b7a0f0b363d0
Child:
36:203ec93b4cc7
better collision for keys and traps

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 29:d85886364643 22 /*void Levelobjects::get_miner_pos()
el17arm 29:d85886364643 23 {
el17arm 29:d85886364643 24 Vector2D p = _miner.get_pos();
el17arm 29:d85886364643 25
el17arm 29:d85886364643 26 printf("miner x %f \n", p.x);
el17arm 29:d85886364643 27 printf("miner y %f \n", p.y);
el17arm 29:d85886364643 28 }*/
el17arm 29:d85886364643 29
el17arm 29:d85886364643 30 void Gameengine::read_direction(Gamepad &pad)
el17arm 29:d85886364643 31 {
el17arm 29:d85886364643 32 _d = pad.get_direction();
el17arm 29:d85886364643 33 }
el17arm 29:d85886364643 34
el17arm 29:d85886364643 35 void Gameengine::update(N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 36 {
el17arm 29:d85886364643 37 t.start();
el17arm 29:d85886364643 38 read_direction(pad);
el17arm 33:023f57d52b1c 39 _sprites.miner_move(_d, lcd);
el17arm 33:023f57d52b1c 40 _sprites.miner_gravity(lcd);
el17arm 33:023f57d52b1c 41 _sprites.miner_jump(lcd, pad);
el17arm 33:023f57d52b1c 42 _sprites.miner_land(lcd);
el17arm 29:d85886364643 43 lose_life(lcd);
el17arm 29:d85886364643 44 game_over();
el17arm 29:d85886364643 45 next_level(lcd);
el17arm 34:c5a042973e0c 46
el17arm 33:023f57d52b1c 47 _sprites.enemy_move(0, 0.5, lcd);
el17arm 33:023f57d52b1c 48 _sprites.enemy_move(1, 1, lcd);
el17arm 34:c5a042973e0c 49
el17arm 29:d85886364643 50 }
el17arm 29:d85886364643 51
el17arm 34:c5a042973e0c 52 void Gameengine::draw(keyed _k, N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 53 {
el17arm 29:d85886364643 54 if (_level_select == 1) {
el17arm 34:c5a042973e0c 55
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 34:c5a042973e0c 61 solid_blocks(lcd);
el17arm 34:c5a042973e0c 62 _sprites.keys_collected();
el17arm 34:c5a042973e0c 63 //_l1.traps(lcd);
el17arm 34:c5a042973e0c 64 _sprites.key_collect(0, 79, 12, lcd, pad);
el17arm 34:c5a042973e0c 65 _sprites.key_collect(1, 36, 22, lcd, pad);
el17arm 34:c5a042973e0c 66 _sprites.key_collect(2, 40, 6, lcd, pad);
el17arm 34:c5a042973e0c 67 _sprites.key_collect(3, 62, 6, lcd, pad);
el17arm 34:c5a042973e0c 68 _sprites.key_collect(4, 75, 0, lcd, pad);
el17arm 29:d85886364643 69
el17arm 29:d85886364643 70 }
el17arm 29:d85886364643 71 if(_level_select == 2) {
el17arm 29:d85886364643 72
el17arm 33:023f57d52b1c 73 _sprites.miner_draw(lcd);
el17arm 29:d85886364643 74 lcd.drawLine(0,47,83,47,1);
el17arm 29:d85886364643 75 //printf("level 2 time = %f \n", t.read());
el17arm 29:d85886364643 76 }
el17arm 29:d85886364643 77 }
el17arm 29:d85886364643 78
el17arm 33:023f57d52b1c 79 bool Gameengine::enemy_death()
el17arm 33:023f57d52b1c 80 {
el17arm 33:023f57d52b1c 81 if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) ||
el17arm 34:c5a042973e0c 82 _sprites.enemy_collision(2) || _sprites.enemy_collision(3))
el17arm 33:023f57d52b1c 83
el17arm 33:023f57d52b1c 84 return true;
el17arm 33:023f57d52b1c 85 else {
el17arm 33:023f57d52b1c 86 return false;
el17arm 33:023f57d52b1c 87 }
el17arm 33:023f57d52b1c 88 }
el17arm 33:023f57d52b1c 89
el17arm 29:d85886364643 90 void Gameengine::lose_life(N5110 &lcd)
el17arm 29:d85886364643 91 {
el17arm 34:c5a042973e0c 92 if (trap_death(lcd) == true || enemy_death() == true) {
el17arm 29:d85886364643 93 _lives--;
el17arm 33:023f57d52b1c 94 _sprites.miner_init(3, 33);
el17arm 29:d85886364643 95 wait(1);
el17arm 29:d85886364643 96 }
el17arm 29:d85886364643 97 }
el17arm 29:d85886364643 98
el17arm 29:d85886364643 99 bool Gameengine::game_over()
el17arm 29:d85886364643 100 {
el17arm 29:d85886364643 101 if(_lives == 0 || t.read() > 60) {
el17arm 29:d85886364643 102 t.stop();
el17arm 29:d85886364643 103 return true;
el17arm 29:d85886364643 104 } else {
el17arm 29:d85886364643 105 return false;
el17arm 29:d85886364643 106 }
el17arm 29:d85886364643 107 }
el17arm 29:d85886364643 108
el17arm 29:d85886364643 109 void Gameengine::next_level(N5110 &lcd)
el17arm 29:d85886364643 110 {
el17arm 29:d85886364643 111 if(_l1.level1_exit(lcd) == true) {
el17arm 29:d85886364643 112 t.stop();
el17arm 29:d85886364643 113 _level_select = 2;
el17arm 33:023f57d52b1c 114 _sprites.miner_init(3,0);
el17arm 29:d85886364643 115 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 29:d85886364643 116 }
el17arm 34:c5a042973e0c 117 }
el17arm 34:c5a042973e0c 118
el17arm 34:c5a042973e0c 119 bool Gameengine::trap_death(N5110 &lcd)
el17arm 34:c5a042973e0c 120 {
el17arm 34:c5a042973e0c 121 if(_sprites.trap (0, 25, 44, lcd) || _sprites.trap(1,58, 6, lcd) ||
el17arm 34:c5a042973e0c 122 _sprites.trap(2, 75, 6, lcd) || _sprites.trap(3,23,6,lcd)) {
el17arm 34:c5a042973e0c 123 return true;
el17arm 34:c5a042973e0c 124 } else {
el17arm 34:c5a042973e0c 125 return false;
el17arm 34:c5a042973e0c 126 }
el17arm 34:c5a042973e0c 127 }
el17arm 34:c5a042973e0c 128
el17arm 34:c5a042973e0c 129 void Gameengine::solid_blocks(N5110 &lcd)
el17arm 34:c5a042973e0c 130 {
el17arm 34:c5a042973e0c 131 _sprites.blocks(0, 49,37, lcd);
el17arm 34:c5a042973e0c 132 _sprites.blocks(1, 42,22, lcd);
el17arm 29:d85886364643 133 }