Albert Tan Mulligan Submission

Dependencies:   mbed

Revision:
6:546eba371942
Parent:
5:51fd6635141f
Child:
7:0434857199cf
--- a/main.cpp	Wed May 20 21:39:09 2020 +0000
+++ b/main.cpp	Fri May 22 14:58:55 2020 +0000
@@ -17,6 +17,7 @@
 #include "Character.h"
 #include "Bullets.h"
 #include "Enemy.h"
+#include <vector>
 Serial pc(USBTX, USBRX);
 //STRUCTS
 struct State {
@@ -29,7 +30,8 @@
 N5110 lcd;
 Character p1;
 Bullets shot;
-Enemy boi;
+volatile int enemy_number = 1;
+vector<Enemy> enemies;
 //Variables
 State fsm[3] = {
         {0,{1,1}},
@@ -37,6 +39,7 @@
         {2,{1,0}}
         };
 volatile int Current_State = 0;
+volatile int timer = 0;
 //PROTOTYPES
 void menu();
 void GameRun();
@@ -78,21 +81,21 @@
             if (pad.A_pressed()) {
                 //pc.printf("Button_A");
                 Current_State = fsm[0].next_state[0];
-                boi.init();
+                enemies.push_back(Enemy(timer));
                 p1.init(40,22);     
                 return;
             }
             if (pad.X_pressed()) {
                 //pc.printf("Button_X");
                 Current_State = fsm[0].next_state[0];
-                boi.init();
+                enemies.push_back(Enemy(timer));
                 p1.init(40,22); 
                 return;
             }
             if (pad.Y_pressed()) {
                 //pc.printf("Button_Y");
                 Current_State = fsm[0].next_state[0];
-                boi.init();
+                enemies.push_back(Enemy(timer));
                 p1.init(40,22); 
                 return;
             }
@@ -105,27 +108,26 @@
     Direction dir = pad.get_direction();
     float mag = pad.get_mag();
     while(1){
+        timer++;
         //movement code
         dir = pad.get_direction();
         mag = pad.get_mag();
         
         if (pad.A_pressed()) {
-                shot.init(p1.get_x()+2, p1.get_y()+2, 1);
+            shot.init(p1.get_x()+2, p1.get_y()+2, 1);
         }
-        else if (pad.B_pressed()) {
-                shot.init(p1.get_x()+2, p1.get_y()+2, 2);
-        }        
-        else if (pad.Y_pressed()) {
-                shot.init(p1.get_x()+2, p1.get_y()+2, 3);
+        if (enemies.size()== 0) {
+            LevelUp();
         }
-        else if (pad.X_pressed()) {
-                shot.init(p1.get_x()+2, p1.get_y()+2, 0);
-        }
-        boi.update(p1.get_x()+1, p1.get_y()+1);
         p1.update(dir, mag);
         shot.update(p1.get_x()+2, p1.get_y()+2);
+        for(int i = 0; i<enemies.size(); i++){
+            enemies.at(i).update(p1.get_x()+2, p1.get_y()+2);
+            }
         lcd.clear(); 
-        boi.draw(lcd);
+        for(int i = 0; i<enemies.size(); i++){
+            enemies.at(i).draw(lcd);
+            }
         p1.draw(lcd);
         shot.draw(lcd);
         lcd.refresh();
@@ -156,10 +158,14 @@
     }
 void LevelUp(){
     
-    lcd.printString("     NEXT LEVEL    ",0,1);  
+    lcd.printString("NEXT LEVEL    ",0,1);  
+    lcd.refresh();  
     wait(2.0);
-    lcd.refresh();
+    enemy_number *= 2;
+    for(int i = 0; i < enemy_number; i++){
+         enemies.push_back(Enemy(timer));
+        }
     p1.level_up();
-    Current_State = fsm[Current_State].next_state[0];
+    Current_State = 1;
     return;
     }