Ellis Blackford Stroud 201155309

Dependencies:   mbed FATFileSystem

Revision:
9:bc34f2243e43
Parent:
8:d410856c6d04
Child:
10:9f54a6366e94
--- a/main.cpp	Thu Apr 18 10:42:42 2019 +0000
+++ b/main.cpp	Sat Apr 20 10:42:17 2019 +0000
@@ -19,7 +19,11 @@
 Gamepad pad;
 Menu menu;
 GolfEngine golf;
+
+//functions
 void init();
+void inverseFlash();
+
 
 int frame_rate = 40;
 
@@ -36,21 +40,36 @@
         menu.menu_screen(pad, lcd); 
         start_game = menu.menu_change(lcd, pad); //changes menu screen to selected screen the returns true when start game 
     }  
-    
-    frame_rate = menu.get_frame_rate(); //can be changed in the settings screen
+    lcd.clear();
+    golf.printLevel(lcd); 
+    lcd.refresh();
+    wait(1);
+    frame_rate = menu.get_frame_rate(); //changes frame rate to the value chosen in settings
     //game loop to run game
     
     while(1){ 
-    
-        lcd.clear();    
-        golf.read_input(pad);
-        golf.update_ball(pad, frame_rate);
-        golf.drawGame(lcd, pad);     
-        lcd.refresh();
-        wait(1.0f/frame_rate); //time between loops/frames
-
+        
+        if(golf.get_hole_flag() == false) { //if ball not in hole
+            
+            lcd.clear();
+            golf.read_input(pad);
+            golf.update_ball(pad, frame_rate);
+            golf.drawGame(lcd, pad);     
+            lcd.refresh();
+            wait(1.0f/frame_rate); //time between loops/frames (at lower frame rates ball may be harder to get in hole)
+            
+        } else if(golf.get_hole_flag() == true) { //if ball goes in hole end level and start new level
+            
+            inverseFlash(); //flashes screen pixels on and off
+            inverseFlash();
+            lcd.clear();
+            golf.new_level(); //moves ball to new level position and increments level
+            golf.reset_hole_flag(); //so that the game loop can continue
+            golf.printLevel(lcd); //notifying user of start of new level 
+            lcd.refresh();
+            wait(1);
+        }
     }
-    
 }
 
 void init()
@@ -61,3 +80,19 @@
     golf.init();
     lcd.setContrast(0.5f);
 }
+
+void inverseFlash()
+{
+    lcd.inverseMode();
+    lcd.refresh();
+    wait(0.25);
+    lcd.normalMode();
+    lcd.refresh();
+    wait(0.25);
+    lcd.inverseMode();
+    lcd.refresh();
+    wait(0.25);
+    lcd.normalMode();
+    lcd.refresh();
+    wait(0.25);
+}