ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 17:56:13 2019 +0000
Revision:
33:023f57d52b1c
Parent:
29:d85886364643
Child:
34:c5a042973e0c
Miner class changed name to Sprites as more appropriate

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 29:d85886364643 39 //get_miner_pos();
el17arm 33:023f57d52b1c 40 _sprites.miner_move(_d, lcd);
el17arm 33:023f57d52b1c 41 _sprites.miner_gravity(lcd);
el17arm 33:023f57d52b1c 42 _sprites.miner_jump(lcd, pad);
el17arm 33:023f57d52b1c 43 _sprites.miner_land(lcd);
el17arm 29:d85886364643 44 lose_life(lcd);
el17arm 29:d85886364643 45 game_over();
el17arm 29:d85886364643 46 next_level(lcd);
el17arm 29:d85886364643 47
el17arm 33:023f57d52b1c 48 _sprites.enemy_move(0, 0.5, lcd);
el17arm 33:023f57d52b1c 49 _sprites.enemy_move(1, 1, lcd);
el17arm 29:d85886364643 50
el17arm 29:d85886364643 51 }
el17arm 29:d85886364643 52
el17arm 29:d85886364643 53 void Gameengine::draw(Key _k, N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 54 {
el17arm 29:d85886364643 55 if (_level_select == 1) {
el17arm 29:d85886364643 56
el17arm 33:023f57d52b1c 57 _sprites.enemy_collision(0);
el17arm 33:023f57d52b1c 58 _sprites.enemy_collision(1);
el17arm 33:023f57d52b1c 59 _sprites.miner_draw(lcd);
el17arm 29:d85886364643 60 _l1.level_platforms(lcd);
el17arm 29:d85886364643 61 _l1.soft_blocks(lcd);
el17arm 29:d85886364643 62 _l1.solid_blocks(lcd);
el17arm 29:d85886364643 63 _l1.keys(lcd, pad);
el17arm 29:d85886364643 64 _l1.keys_collected();
el17arm 29:d85886364643 65 _l1.traps(lcd);
el17arm 29:d85886364643 66
el17arm 29:d85886364643 67 }
el17arm 29:d85886364643 68 if(_level_select == 2) {
el17arm 29:d85886364643 69
el17arm 33:023f57d52b1c 70 _sprites.miner_draw(lcd);
el17arm 29:d85886364643 71 lcd.drawLine(0,47,83,47,1);
el17arm 29:d85886364643 72 //printf("level 2 time = %f \n", t.read());
el17arm 29:d85886364643 73 }
el17arm 29:d85886364643 74 }
el17arm 29:d85886364643 75
el17arm 33:023f57d52b1c 76 bool Gameengine::enemy_death()
el17arm 33:023f57d52b1c 77 {
el17arm 33:023f57d52b1c 78 if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) ||
el17arm 33:023f57d52b1c 79 _sprites.enemy_collision(2) || _sprites.enemy_collision(3))
el17arm 33:023f57d52b1c 80
el17arm 33:023f57d52b1c 81 return true;
el17arm 33:023f57d52b1c 82 else {
el17arm 33:023f57d52b1c 83 return false;
el17arm 33:023f57d52b1c 84 }
el17arm 33:023f57d52b1c 85 }
el17arm 33:023f57d52b1c 86
el17arm 29:d85886364643 87 void Gameengine::lose_life(N5110 &lcd)
el17arm 29:d85886364643 88 {
el17arm 33:023f57d52b1c 89 if (_l1.traps(lcd) == 1 || enemy_death() == true) {
el17arm 29:d85886364643 90 _lives--;
el17arm 33:023f57d52b1c 91 _sprites.miner_init(3, 33);
el17arm 29:d85886364643 92 wait(1);
el17arm 29:d85886364643 93 }
el17arm 29:d85886364643 94 }
el17arm 29:d85886364643 95
el17arm 29:d85886364643 96 bool Gameengine::game_over()
el17arm 29:d85886364643 97 {
el17arm 29:d85886364643 98 if(_lives == 0 || t.read() > 60) {
el17arm 29:d85886364643 99 t.stop();
el17arm 29:d85886364643 100 return true;
el17arm 29:d85886364643 101 } else {
el17arm 29:d85886364643 102 return false;
el17arm 29:d85886364643 103 }
el17arm 29:d85886364643 104 }
el17arm 29:d85886364643 105
el17arm 29:d85886364643 106 void Gameengine::next_level(N5110 &lcd)
el17arm 29:d85886364643 107 {
el17arm 29:d85886364643 108 if(_l1.level1_exit(lcd) == true) {
el17arm 29:d85886364643 109 t.stop();
el17arm 29:d85886364643 110 _level_select = 2;
el17arm 33:023f57d52b1c 111 _sprites.miner_init(3,0);
el17arm 29:d85886364643 112 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 29:d85886364643 113 }
el17arm 29:d85886364643 114 }