ELEC2645 (2018/19) / Mbed 2 deprecated el17aj

Dependencies:   mbed

Revision:
1:3916f272663e
Child:
2:88019d96e1da
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GameEngine/GameEngine.cpp	Sun Apr 21 19:02:21 2019 +0000
@@ -0,0 +1,110 @@
+#include "GameEngine.h"
+
+
+GameEngine::GameEngine()
+{
+
+}
+
+GameEngine::~GameEngine()
+{
+
+}
+
+void GameEngine::init(int CrossHairsSpeed, int fps)
+{
+    // initialise the game parameters
+    _fps = fps;
+    _levelNumber = 100;
+    _money = 0;
+    
+    
+    
+    _crossHairs.init(CrossHairsSpeed);
+    
+    
+    
+    
+    srand(time(NULL));
+    
+    _enemies = _level.init(_levelNumber);
+    
+
+
+    
+    
+    
+    
+}
+
+void GameEngine::read_input(Gamepad &pad)
+{
+    _angle = pad.get_angle();
+    _mag = pad.get_mag();
+}
+
+void GameEngine::draw(N5110 &lcd)
+{
+    //draw wall
+    lcd.drawRect(0,28,10,20,FILL_TRANSPARENT);
+    lcd.drawLine(0,28,10,0,1);  //back top of wall
+    lcd.drawLine(10,0,20,0,1);  //side of wall
+    lcd.drawLine(10,28,20,0,1); //front top of wall
+    lcd.drawLine(10,48,20,20,1); //front bottom of wall
+    lcd.drawLine(20,20,20,0,1); //front side of wall
+    
+    
+    
+    // draw the elements in the LCD buffer
+    /*
+    _enemy.draw(lcd);
+    _enemy2.draw(lcd);
+    */
+    _crossHairs.draw(lcd);
+    
+    
+    
+    
+    for (int i=0; i < _levelNumber; i++) {
+        _enemies[i].draw(lcd);
+    }
+    
+ 
+}
+
+void GameEngine::update(Gamepad &pad)
+{
+    _level.update(_fps);
+    _crossHairs.update(_angle,_mag, _fps);
+    /*
+    _enemy.update();
+    _enemy2.update();
+    */
+    
+    
+    for (int i=0; i < _levelNumber; i++) {
+        _enemies[i].update();
+    }
+    
+    if ( pad.check_event(Gamepad::B_PRESSED) == true) {
+        fireShot(pad);
+    }
+    
+        
+    
+}
+
+void GameEngine::fireShot(Gamepad &gpad)
+{
+    Vector2D shotLoc = _crossHairs.get_pos();
+    for(int i = 0; i < _levelNumber; i++) {
+        Vector2D enemyLoc = _enemies[i].get_pos();
+        
+        if (abs(enemyLoc.x - shotLoc.x) < 4) {
+            if (abs(enemyLoc.y - shotLoc.y) < 4) {
+                _enemies[i].set_alive(false);
+            }
+        }
+    }
+}
+