ELEC2645 (2018/19) / Mbed 2 deprecated el17aj

Dependencies:   mbed

Committer:
adat80
Date:
Sun Apr 21 19:02:21 2019 +0000
Revision:
1:3916f272663e
Child:
2:88019d96e1da
Program with working spawning of enemies and killing of enemies;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adat80 1:3916f272663e 1 #include "GameEngine.h"
adat80 1:3916f272663e 2
adat80 1:3916f272663e 3
adat80 1:3916f272663e 4 GameEngine::GameEngine()
adat80 1:3916f272663e 5 {
adat80 1:3916f272663e 6
adat80 1:3916f272663e 7 }
adat80 1:3916f272663e 8
adat80 1:3916f272663e 9 GameEngine::~GameEngine()
adat80 1:3916f272663e 10 {
adat80 1:3916f272663e 11
adat80 1:3916f272663e 12 }
adat80 1:3916f272663e 13
adat80 1:3916f272663e 14 void GameEngine::init(int CrossHairsSpeed, int fps)
adat80 1:3916f272663e 15 {
adat80 1:3916f272663e 16 // initialise the game parameters
adat80 1:3916f272663e 17 _fps = fps;
adat80 1:3916f272663e 18 _levelNumber = 100;
adat80 1:3916f272663e 19 _money = 0;
adat80 1:3916f272663e 20
adat80 1:3916f272663e 21
adat80 1:3916f272663e 22
adat80 1:3916f272663e 23 _crossHairs.init(CrossHairsSpeed);
adat80 1:3916f272663e 24
adat80 1:3916f272663e 25
adat80 1:3916f272663e 26
adat80 1:3916f272663e 27
adat80 1:3916f272663e 28 srand(time(NULL));
adat80 1:3916f272663e 29
adat80 1:3916f272663e 30 _enemies = _level.init(_levelNumber);
adat80 1:3916f272663e 31
adat80 1:3916f272663e 32
adat80 1:3916f272663e 33
adat80 1:3916f272663e 34
adat80 1:3916f272663e 35
adat80 1:3916f272663e 36
adat80 1:3916f272663e 37
adat80 1:3916f272663e 38 }
adat80 1:3916f272663e 39
adat80 1:3916f272663e 40 void GameEngine::read_input(Gamepad &pad)
adat80 1:3916f272663e 41 {
adat80 1:3916f272663e 42 _angle = pad.get_angle();
adat80 1:3916f272663e 43 _mag = pad.get_mag();
adat80 1:3916f272663e 44 }
adat80 1:3916f272663e 45
adat80 1:3916f272663e 46 void GameEngine::draw(N5110 &lcd)
adat80 1:3916f272663e 47 {
adat80 1:3916f272663e 48 //draw wall
adat80 1:3916f272663e 49 lcd.drawRect(0,28,10,20,FILL_TRANSPARENT);
adat80 1:3916f272663e 50 lcd.drawLine(0,28,10,0,1); //back top of wall
adat80 1:3916f272663e 51 lcd.drawLine(10,0,20,0,1); //side of wall
adat80 1:3916f272663e 52 lcd.drawLine(10,28,20,0,1); //front top of wall
adat80 1:3916f272663e 53 lcd.drawLine(10,48,20,20,1); //front bottom of wall
adat80 1:3916f272663e 54 lcd.drawLine(20,20,20,0,1); //front side of wall
adat80 1:3916f272663e 55
adat80 1:3916f272663e 56
adat80 1:3916f272663e 57
adat80 1:3916f272663e 58 // draw the elements in the LCD buffer
adat80 1:3916f272663e 59 /*
adat80 1:3916f272663e 60 _enemy.draw(lcd);
adat80 1:3916f272663e 61 _enemy2.draw(lcd);
adat80 1:3916f272663e 62 */
adat80 1:3916f272663e 63 _crossHairs.draw(lcd);
adat80 1:3916f272663e 64
adat80 1:3916f272663e 65
adat80 1:3916f272663e 66
adat80 1:3916f272663e 67
adat80 1:3916f272663e 68 for (int i=0; i < _levelNumber; i++) {
adat80 1:3916f272663e 69 _enemies[i].draw(lcd);
adat80 1:3916f272663e 70 }
adat80 1:3916f272663e 71
adat80 1:3916f272663e 72
adat80 1:3916f272663e 73 }
adat80 1:3916f272663e 74
adat80 1:3916f272663e 75 void GameEngine::update(Gamepad &pad)
adat80 1:3916f272663e 76 {
adat80 1:3916f272663e 77 _level.update(_fps);
adat80 1:3916f272663e 78 _crossHairs.update(_angle,_mag, _fps);
adat80 1:3916f272663e 79 /*
adat80 1:3916f272663e 80 _enemy.update();
adat80 1:3916f272663e 81 _enemy2.update();
adat80 1:3916f272663e 82 */
adat80 1:3916f272663e 83
adat80 1:3916f272663e 84
adat80 1:3916f272663e 85 for (int i=0; i < _levelNumber; i++) {
adat80 1:3916f272663e 86 _enemies[i].update();
adat80 1:3916f272663e 87 }
adat80 1:3916f272663e 88
adat80 1:3916f272663e 89 if ( pad.check_event(Gamepad::B_PRESSED) == true) {
adat80 1:3916f272663e 90 fireShot(pad);
adat80 1:3916f272663e 91 }
adat80 1:3916f272663e 92
adat80 1:3916f272663e 93
adat80 1:3916f272663e 94
adat80 1:3916f272663e 95 }
adat80 1:3916f272663e 96
adat80 1:3916f272663e 97 void GameEngine::fireShot(Gamepad &gpad)
adat80 1:3916f272663e 98 {
adat80 1:3916f272663e 99 Vector2D shotLoc = _crossHairs.get_pos();
adat80 1:3916f272663e 100 for(int i = 0; i < _levelNumber; i++) {
adat80 1:3916f272663e 101 Vector2D enemyLoc = _enemies[i].get_pos();
adat80 1:3916f272663e 102
adat80 1:3916f272663e 103 if (abs(enemyLoc.x - shotLoc.x) < 4) {
adat80 1:3916f272663e 104 if (abs(enemyLoc.y - shotLoc.y) < 4) {
adat80 1:3916f272663e 105 _enemies[i].set_alive(false);
adat80 1:3916f272663e 106 }
adat80 1:3916f272663e 107 }
adat80 1:3916f272663e 108 }
adat80 1:3916f272663e 109 }
adat80 1:3916f272663e 110