My ELEC2645 project. Nikollao Sulollari. 200804685

Dependencies:   N5110 SoftPWM mbed

Revision:
19:70d40dac5ae0
Parent:
18:5405ee7e243b
Child:
20:59aa6189a47d
--- a/main.cpp	Mon May 02 12:01:55 2016 +0000
+++ b/main.cpp	Mon May 02 15:08:00 2016 +0000
@@ -47,7 +47,6 @@
             pc.printf("heroY = %d , heroX = %d , n = %d \n",heroY, heroX, n);
             checkOverlap();
             updateJoystick();
-            //callibrateJoystick();
             lcd.refresh();
         }
         sleep();
@@ -121,18 +120,31 @@
     if (level == 0) {
 
         enemyRect();
-        //enemyCircle();
+        enemyCircle();
     } else if (level == 1) {
 
         enemyRect();
-        //enemyCircle();
+        enemyCircle();
     } else if (level == 2) {
-
+        
+        enemyRocket();
     } else if (level == 3) {
-
+        
+        enemyRect();
+        enemyCircle();
+    } else if (level == 4) {
+        
+         enemyRect();
+        enemyCircle();  
+    } else if (level == 5) {
+        enemyRocket();
+    } else if (level == 6) {
+        enemyRocket();
+        enemyCircle();   
     }
-    enemyCircle();
-    enemyRect();
+    else if (level == 7) {
+           
+    }
 }
 
 void enemyRect()
@@ -144,11 +156,28 @@
     if (rectY == 50) {
         rectY = 0;
     }
-    if (rectX == 75 || rectX == 25) {
-        rectX = 40+rand()%10 - 5;
+    if (rectX > 75 || rectX < 25) {
+        rectX = 40+rand()%6 - 3;
     }
 }
 
+void enemyRocket() {
+    
+    lcd.drawRect(rectX,rectY,2,7,1);
+    lcd.drawCircle(rectX+1,rectY+1,2,1);
+    lcd.drawLine(rectX-2,rectY+2,rectX,rectY-1,1);
+    lcd.drawLine(rectX+2,rectY+2,rectX,rectY-1,1);
+    
+    rectX = rectX + rand()%4 - 2;
+    rectY++; ///enemy moving towards hero
+    
+    if (rectY == 50) {
+        rectY = 0;
+    }
+    if (rectX > 75 || rectX < 10) {
+        rectX = 40+rand()%6 - 3;
+    }
+}
 void hero()
 {
     ///cotrol hero
@@ -255,20 +284,21 @@
     } else if (level == 8) {
 
         ticker.detach();
+        game_ticker.attach(&game_timer_isr,0.2);
         lcd.clear();
         lcd.printString("Well done!",0,0);
         lcd.refresh();
         wait(2);
         lcd.clear();
-        lcd.printString("Play again",0,0);
+        lcd.printString("Play again!",0,0);
         lcd.drawCircle(70,4,2,1);
         lcd.refresh();
         g_button_flag = 0;
 
         while(1) {
-            if  (g_button_flag) {
+            if  (g_button1_flag) {
 
-                g_button_flag = 0;
+                g_button1_flag = 0;
                 level = 0;
                 // play++;
                 lcd.clear();
@@ -289,17 +319,22 @@
 
         lcd.drawRect(10,15,2,2,1);
         lcd.drawRect(74,15,2,2,1);
-    } 
-    else if (level == 1) {
-        
-        
-    }
-    else if (level == 2) {
+    } else if (level == 1) {
 
         lcd.drawRect(10,15,2,2,1);
         lcd.drawRect(74,15,2,2,1);
         lcd.drawRect(10,28,2,2,1);
         lcd.drawRect(74,28,2,2,1);
+    } else if (level == 2) {
+
+        lcd.drawCircle(37,25,5,0);
+        lcd.drawCircle(47,25,5,0);
+        lcd.drawCircle(42,11,3,1);
+        lcd.drawCircle(37,25,3,1);
+        lcd.drawCircle(47,25,3,1);
+        lcd.drawRect(80,2,2,42,1);
+        lcd.drawRect(2,2,2,42,1);
+
     } else if (level == 3) {
 
         lcd.drawRect(5,12,2,2,1);
@@ -312,14 +347,14 @@
         lcd.drawRect(52,30,2,2,1);
     } else if (level == 4) {
 
-        lcd.drawRect(5 ,12+ rand() %4 - 2,2,2,1);
+        lcd.drawRect(5+rand() %4 - 2 ,12+rand() %4 - 2,2,2,1);
         lcd.drawRect(79 + rand() %4 - 2,12 + rand() %4 - 2,2,2,1);
-        lcd.drawRect(5+ rand() %4 - 2,30 ,2,2,1);
-        lcd.drawRect(79 + rand() %4 - 2,30,2,2,1);
+        lcd.drawRect(5+ rand() %4 - 2,30+rand() %4 - 2 ,2,2,1);
+        lcd.drawRect(79 + rand() %4 - 2,30+rand() %4 - 2,2,2,1);
         lcd.drawRect(28 + rand() %4 - 2,12+ rand() %4,2,2,1);
-        lcd.drawRect(52,12 + rand() %4 - 2,2,2,1);
-        lcd.drawRect(28,30 + rand() %4 - 2,2,2,1);
-        lcd.drawRect(52 + rand() %4 - 2,30,2,2,1);
+        lcd.drawRect(52+rand() %4 - 2,12 + rand() %4 - 2,2,2,1);
+        lcd.drawRect(28+rand() %4 - 2,30 + rand() %4 - 2,2,2,1);
+        lcd.drawRect(52 + rand() %4 - 2,30+ rand() %4,2,2,1);
     }
     if (objectX == 0) { ///check position of obstacle
         state = 0; ///assign states to the position of the obstacle
@@ -441,7 +476,7 @@
             lcd.printString("Settings",0,2);
             lcd.printString("Exit",0,4);
             //lcd.drawCircle(70,4,2,1);
-
+            lcd.refresh();
             switch (joystick.direction) { ///check the direction of joystick
                 case UP:
                     option--;
@@ -689,13 +724,12 @@
             for(int i = 40; i < 50; i++) {
                 for (int j = 35; j < 47; j++) {
 
-                    if (check > 6) {
+                    if (lcd.getPixel(i,j) && check > 6) {
                         check = 6;
                     }
                 }
             }
             if (check > 7) {
-
                 tries--;
                 //if tries
 
@@ -736,22 +770,27 @@
                     lcd.refresh();
                     wait(2);
 
-                    //ticker.detach();
+                    ticker.detach();
+                    game_ticker.attach(&game_timer_isr,0.2);
                     lcd.clear();
-                    lcd.printString("Play again",0,0);
+                    lcd.printString("Play again!",0,0);
                     lcd.drawCircle(70,4,2,1);
                     lcd.refresh();
                     g_button_flag = 0;
 
                     while(1) {
-                        if  (g_button_flag) {
+                        if  (g_button1_flag) {
 
-                            g_button_flag = 0;
+                            g_button1_flag = 0;
                             level = 0;
                             tries = 3;
                             fsm_state = 0;
                             led_output=fsm[fsm_state];
                             lcd.clear();
+                            heroX = 0;
+                            heroY = 0;
+                            rectY = 0;
+                            circleX = 0;
                             main();
                         }
                         sleep();