ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 16:20:28 2019 +0000
Revision:
31:ed5f7f15a1ed
Parent:
29:d85886364643
back up

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 31:ed5f7f15a1ed 7
el17arm 29:d85886364643 8 }
el17arm 29:d85886364643 9
el17arm 29:d85886364643 10 Gameengine::~Gameengine()
el17arm 29:d85886364643 11 {
el17arm 29:d85886364643 12 }
el17arm 29:d85886364643 13
el17arm 29:d85886364643 14 void Gameengine::game_init()
el17arm 29:d85886364643 15 {
el17arm 29:d85886364643 16 _level_select = 1;
el17arm 31:ed5f7f15a1ed 17 _sprites.miner_init(3, 33);
el17arm 31:ed5f7f15a1ed 18 _sprites.enemy_init(1, 22, 42, 40);
el17arm 31:ed5f7f15a1ed 19 _sprites.enemy_init(0, 22, 20, 40);
el17arm 29:d85886364643 20 _lives = 3;
el17arm 29:d85886364643 21 }
el17arm 29:d85886364643 22
el17arm 31:ed5f7f15a1ed 23 void Gameengine::get_miner_pos()
el17arm 29:d85886364643 24 {
el17arm 31:ed5f7f15a1ed 25 Vector2D p = _sprites.get_pos();
el17arm 29:d85886364643 26
el17arm 31:ed5f7f15a1ed 27 //printf("miner x %f \n", p.x);
el17arm 31:ed5f7f15a1ed 28 //printf("miner y %f \n", p.y);
el17arm 31:ed5f7f15a1ed 29 }
el17arm 29:d85886364643 30
el17arm 29:d85886364643 31 void Gameengine::read_direction(Gamepad &pad)
el17arm 29:d85886364643 32 {
el17arm 29:d85886364643 33 _d = pad.get_direction();
el17arm 29:d85886364643 34 }
el17arm 29:d85886364643 35
el17arm 29:d85886364643 36 void Gameengine::update(N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 37 {
el17arm 29:d85886364643 38 t.start();
el17arm 29:d85886364643 39 read_direction(pad);
el17arm 29:d85886364643 40 //get_miner_pos();
el17arm 31:ed5f7f15a1ed 41 _sprites.miner_move(_d, lcd);
el17arm 31:ed5f7f15a1ed 42 _sprites.miner_gravity(lcd);
el17arm 31:ed5f7f15a1ed 43 _sprites.miner_jump(lcd, pad);
el17arm 31:ed5f7f15a1ed 44 _sprites.miner_land(lcd);
el17arm 29:d85886364643 45 lose_life(lcd);
el17arm 29:d85886364643 46 game_over();
el17arm 29:d85886364643 47 next_level(lcd);
el17arm 31:ed5f7f15a1ed 48 _sprites.enemy_collision(0);
el17arm 31:ed5f7f15a1ed 49 _sprites.enemy_collision(1);
el17arm 31:ed5f7f15a1ed 50 _sprites.enemy_move(0, 0.5, lcd);
el17arm 31:ed5f7f15a1ed 51 _sprites.enemy_move(1, 1, lcd);
el17arm 31:ed5f7f15a1ed 52
el17arm 29:d85886364643 53 }
el17arm 29:d85886364643 54
el17arm 29:d85886364643 55 void Gameengine::draw(Key _k, N5110 &lcd, Gamepad &pad)
el17arm 29:d85886364643 56 {
el17arm 29:d85886364643 57 if (_level_select == 1) {
el17arm 31:ed5f7f15a1ed 58
el17arm 31:ed5f7f15a1ed 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 31:ed5f7f15a1ed 63 keys(lcd, pad);
el17arm 31:ed5f7f15a1ed 64 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 31:ed5f7f15a1ed 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 29:d85886364643 76 void Gameengine::lose_life(N5110 &lcd)
el17arm 29:d85886364643 77 {
el17arm 31:ed5f7f15a1ed 78 if (_l1.traps(lcd) == 1 || enemy_death() == true) {
el17arm 29:d85886364643 79 _lives--;
el17arm 31:ed5f7f15a1ed 80 _sprites.miner_init(3, 33);
el17arm 29:d85886364643 81 wait(1);
el17arm 29:d85886364643 82 }
el17arm 29:d85886364643 83 }
el17arm 29:d85886364643 84
el17arm 31:ed5f7f15a1ed 85 bool Gameengine::enemy_death()
el17arm 31:ed5f7f15a1ed 86 {
el17arm 31:ed5f7f15a1ed 87 if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) ||
el17arm 31:ed5f7f15a1ed 88 _sprites.enemy_collision(2) || _sprites.enemy_collision(3))
el17arm 31:ed5f7f15a1ed 89
el17arm 31:ed5f7f15a1ed 90 return true;
el17arm 31:ed5f7f15a1ed 91 else {
el17arm 31:ed5f7f15a1ed 92 return false;
el17arm 31:ed5f7f15a1ed 93 }
el17arm 31:ed5f7f15a1ed 94 }
el17arm 31:ed5f7f15a1ed 95
el17arm 31:ed5f7f15a1ed 96 bool Gameengine::exit_level(int x, int y, N5110 &lcd)
el17arm 31:ed5f7f15a1ed 97 {
el17arm 31:ed5f7f15a1ed 98 lcd.drawSprite(x,y,6,5,(int *)door);
el17arm 31:ed5f7f15a1ed 99
el17arm 31:ed5f7f15a1ed 100 if(_keys == 5 && lcd.getPixel(x-1, y+5)) {
el17arm 31:ed5f7f15a1ed 101 return true;
el17arm 31:ed5f7f15a1ed 102 } else {
el17arm 31:ed5f7f15a1ed 103 return false;
el17arm 31:ed5f7f15a1ed 104 }
el17arm 31:ed5f7f15a1ed 105 }
el17arm 31:ed5f7f15a1ed 106
el17arm 31:ed5f7f15a1ed 107 void Gameengine::next_level(N5110 &lcd)
el17arm 31:ed5f7f15a1ed 108 {
el17arm 31:ed5f7f15a1ed 109 if(_game.level1_exit(lcd) == true) {
el17arm 31:ed5f7f15a1ed 110 t.stop();
el17arm 31:ed5f7f15a1ed 111 _level_select = 2;
el17arm 31:ed5f7f15a1ed 112 _sprites.miner_init(3,0);
el17arm 31:ed5f7f15a1ed 113 printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected()));
el17arm 31:ed5f7f15a1ed 114 }
el17arm 31:ed5f7f15a1ed 115 }
el17arm 31:ed5f7f15a1ed 116
el17arm 31:ed5f7f15a1ed 117 bool Game::level1_exit(N5110 &lcd)
el17arm 31:ed5f7f15a1ed 118 {
el17arm 31:ed5f7f15a1ed 119 if(_level.exit_level(78,41,lcd) == true) {
el17arm 31:ed5f7f15a1ed 120 return true;
el17arm 31:ed5f7f15a1ed 121 } else {
el17arm 31:ed5f7f15a1ed 122 return false;
el17arm 31:ed5f7f15a1ed 123 }
el17arm 31:ed5f7f15a1ed 124 }
el17arm 31:ed5f7f15a1ed 125
el17arm 31:ed5f7f15a1ed 126 bool Level1::level1_exit(N5110 &lcd)
el17arm 31:ed5f7f15a1ed 127 {
el17arm 31:ed5f7f15a1ed 128 if(_level.exit_level(78,41,lcd) == true) {
el17arm 31:ed5f7f15a1ed 129 return true;
el17arm 31:ed5f7f15a1ed 130 } else {
el17arm 31:ed5f7f15a1ed 131 return false;
el17arm 31:ed5f7f15a1ed 132 }
el17arm 31:ed5f7f15a1ed 133 }
el17arm 31:ed5f7f15a1ed 134
el17arm 29:d85886364643 135 bool Gameengine::game_over()
el17arm 29:d85886364643 136 {
el17arm 29:d85886364643 137 if(_lives == 0 || t.read() > 60) {
el17arm 29:d85886364643 138 t.stop();
el17arm 29:d85886364643 139 return true;
el17arm 29:d85886364643 140 } else {
el17arm 29:d85886364643 141 return false;
el17arm 29:d85886364643 142 }
el17arm 29:d85886364643 143 }