ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 00:50:14 2019 +0000
Revision:
29:d85886364643
Child:
31:ed5f7f15a1ed
Child:
33:023f57d52b1c
function created so I can generate multiple enemies on the screen moving at different distances and different speeds

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 29:d85886364643 16 _miner.miner_init(3, 33);
el17arm 29:d85886364643 17 _miner.enemy_init(1, 22, 42, 40);
el17arm 29:d85886364643 18 _miner.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 29:d85886364643 40 _miner.miner_move(_d, lcd);
el17arm 29:d85886364643 41 _miner.miner_gravity(lcd);
el17arm 29:d85886364643 42 _miner.miner_jump(lcd, pad);
el17arm 29:d85886364643 43 _miner.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 29:d85886364643 48 _miner.enemy_move(0, 0.5, lcd);
el17arm 29:d85886364643 49 _miner.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 29:d85886364643 57 _miner.enemy_collision(0);
el17arm 29:d85886364643 58 _miner.enemy_collision(1);
el17arm 29:d85886364643 59 _miner.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 29:d85886364643 70 _miner.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 29:d85886364643 76 void Gameengine::lose_life(N5110 &lcd)
el17arm 29:d85886364643 77 {
el17arm 29:d85886364643 78 if (_l1.traps(lcd) == 1 || _miner.enemy_collision(0) == true) {
el17arm 29:d85886364643 79 _lives--;
el17arm 29:d85886364643 80 _miner.miner_init(3, 33);
el17arm 29:d85886364643 81 wait(1);
el17arm 29:d85886364643 82 }
el17arm 29:d85886364643 83 }
el17arm 29:d85886364643 84
el17arm 29:d85886364643 85 bool Gameengine::game_over()
el17arm 29:d85886364643 86 {
el17arm 29:d85886364643 87 if(_lives == 0 || t.read() > 60) {
el17arm 29:d85886364643 88 t.stop();
el17arm 29:d85886364643 89 return true;
el17arm 29:d85886364643 90 } else {
el17arm 29:d85886364643 91 return false;
el17arm 29:d85886364643 92 }
el17arm 29:d85886364643 93 }
el17arm 29:d85886364643 94
el17arm 29:d85886364643 95 void Gameengine::next_level(N5110 &lcd)
el17arm 29:d85886364643 96 {
el17arm 29:d85886364643 97 if(_l1.level1_exit(lcd) == true) {
el17arm 29:d85886364643 98 t.stop();
el17arm 29:d85886364643 99 _level_select = 2;
el17arm 29:d85886364643 100 _miner.miner_init(3,0);
el17arm 29:d85886364643 101 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 29:d85886364643 102 }
el17arm 29:d85886364643 103 }