yumaowei 201377547

Dependencies:   mbed ELEC2645_Project_el17my

Revision:
2:5e54476c518f
Parent:
1:df66be0b5b8b
--- a/main.cpp	Sat May 09 06:53:41 2020 +0000
+++ b/main.cpp	Tue May 26 07:24:21 2020 +0000
@@ -5,7 +5,7 @@
 2019/20
 
 Name:yumaowei
-Username:el17my
+Username:el19my
 Student ID Number:201377547
 Date:
 */
@@ -13,15 +13,127 @@
 // includes
 #include "mbed.h"
 #include "Gamepad.h"
-#include "N5110.h"
+#include "LCD.h"
+#include "HuntEngine.h"
+#include "Predator.h"
+
+#ifdef WITH_TESTING
+# include "tests.h"
+#endif
+
+
+#define PREDATOR_RADIUS 4
+#define PREY_SIZE 2
+#define PREY_SPEED 3
+
+/////////////// structs /////////////////
+struct Inputparam {
+    Direction predd;
+    float mag;
+};
+/////////////// objects ///////////////
+LCD lcd;
+Gamepad player;
+HuntEngine hunt;
+Timer timeout;
+Predator predator;
+
+///////////// prototypes ///////////////
+void init();
+void update_game(Inputparam input);
+void display();
+void welcome();
+
+///////////// functions ////////////////
+int main()
+{
+#ifdef WITH_TESTING
+    int number_of_failures = run_all_tests();
+
+    if(number_of_failures > 0) return number_of_failures;
+#endif
+
+    int fps = 6;  // frames per second
+
+    init();     // initialise and then display welcome screen...
+    welcome();  // waiting for the user to start
+
+    display();  // first draw the initial frame 
+    wait(1.0f/fps);  // and wait for one frame period
 
 
-// objects
-Gamepad pad;
-N5110 lcd;
+    // game loop - read input, update the game state and render the display on LCD
+    while (1) {
+        hunt.read_input(player);
+        hunt.update(player);
+        display();
+        wait(1.0f/fps);
+    }
+}
+/* 
+ * Function init:
+ * Description: initialies all classes and libraries
+ *  
+ */
 
-int main()
+void init()
 {
-    
+    // The lcd and the gamepad needs to be intialized first 
+    lcd.init();
+    player.init();
+     
+    // Then,initialise the game with correct prey and predator parameters
+    hunt.init(PREDATOR_RADIUS,PREY_SIZE,PREY_SPEED);
+
 }
 
+/* 
+ * Function display:
+ * Description: This function draws each frame and component on the LCD
+ *  @Brief it also clears,re-draw and refreshes screen
+ */
+
+void display()
+{
+    timeout.start();
+    // clear screen, re-draw and refresh
+    lcd.clear();  
+    hunt.draw(lcd);
+    lcd.refresh();
+    while ( player.start_pressed() == true) {
+        if (timeout.read() > 180000) {
+      timeout.reset();
+      if (predator.get_points() > 10) {
+      lcd.printString(" WIN Game Over! ",10,10);
+      lcd.printString(" SCORE ",10,8);  
+       wait(2);
+       lcd.refresh();
+    }
+    else {
+      lcd.printString("FAILED! Game Over!",10,10);
+      lcd.printString(" SCORE ",10,8);  
+       wait(2);
+       lcd.refresh();
+    }
+    player.start_pressed() == false;
+    }
+    }
+}
+
+// A default  splash screen that is displayed upon start-up of the device
+void welcome() {
+    
+    lcd.printString("     Predator & Prey  Game   ",10,10);  
+    lcd.printString("  Press Start ",10,4);
+    lcd.refresh();
+     
+    // wait flashing LEDs until start button is pressed 
+    while ( player.start_pressed() == false) {
+        lcd.setContrast( player.read_pot1());
+        player.leds_on();
+        wait(0.1);
+        player.leds_off();
+        wait(0.1);
+    }
+ 
+}