ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Revision:
48:8ccfc74b60a5
Parent:
47:29c4796a49e5
Child:
49:6cad8b6ec5f2
--- a/Frogger/Frogger.cpp	Sat May 23 03:53:33 2020 +0000
+++ b/Frogger/Frogger.cpp	Sat May 23 21:47:19 2020 +0000
@@ -20,6 +20,10 @@
     lcd_h = h; // height
     state_frog = 0 ;
     
+    water_level = 48- 4*6; // row 7 and up is the water level
+    frogDie = false;
+    frogOnLog = false;
+    
     // grid values
     grid = 4; // size of game grid system
     grid_width = 22; // size of screen width in grid units
@@ -89,16 +93,26 @@
     //keep reading and processing user input
     while(1) {
         graphics.clear(); // clear the lcd screen
-
-        runCurrentLevel(); // add velocity to level vehicles and logs
+        process_input(); // user controls the frog object   
 
         graphics.drawSafetyLanes();
         
-        graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
-        process_input(); // user controls the frog object   
+        if(frog->y >= water_level)
+        {
+            frogDie = false;
+            runCurrentLevel(); // add velocity to level vehicles and logs
+
+        } else {
+            frogDie = true;
+            runCurrentLevel(); // add velocity to level vehicles and logs
+            
+            if(!frogOnLog){
+                graphics.print();
+            }
+        }
         
-        checkFrogOnWater(); // check if the frog is in the water level
-            
+        graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
+
         graphics.refresh(); // refresh the lcd screen
         
         wait_ms(85); // fpms
@@ -116,10 +130,12 @@
         state_frog = 0;
         moveFrog(0,-1);
         frogOnLog = false;
+
     } else if(gamepad.B_pressed()){
         state_frog = 3;
         moveFrog(0,1);
         frogOnLog = false;
+
     } else if(gamepad.Y_pressed()){
         state_frog = 2;
         moveFrog(-1,0);
@@ -169,14 +185,14 @@
 {
     moveVehiclesLevelOne(); // increment the x pos and display
     moveLogsLevelOne();  
-    checkFrogOnWater(); // check if the frog needs to jump on log/turtles  
+    //checkFrogOnWater(); // check if the frog needs to jump on log/turtles  
 }
 
 void Frogger::runLevelTwo()
 {
     moveVehiclesLevelTwo();
     moveLogsLevelTwo();
-    checkFrogOnWater(); // check if it is above a certain height
+    //checkFrogOnWater(); // check if it is above a certain height
 }
 /* ENGINE CALLS */
 
@@ -214,9 +230,11 @@
 
 void Frogger::checkFrogOnWater()
 {
-    if(frog->y < 84 - 4*6) // if the frog is past the safety lane
+    if(frog->y < water_level) // if the frog is past the safety lane
     {
-        frogWater = true; // frog will die if not on turtle/log
+        frogDie = true; // frog will die if not on turtle/log
+    } else {
+        frogDie = false;   
     }
 }
 
@@ -225,7 +243,7 @@
     for(int i = 0; i < array_size; i++)
     {
         moveIndividualObject(&row[i], c);
-        checkCollison(row[i]); // check if the frog has crashed/on log       
+        checkCollison(row[i]); // check if the frog has crashed/on log
     }
 }
 
@@ -244,7 +262,8 @@
     }
 
     checkOutOfBounds(vehicle);
-    checkFrogOutOfBounds();
+    checkFrogOutOfBounds(); 
+    
     graphics.showObj(vehicle);  // display to screen
 }
 /* ENGINE RUN */
@@ -292,35 +311,49 @@
     (frog->right_side <= object.rectangle.left_side)  ||
     (frog->down <= object.rectangle.up) ||
     (frog->left_side >= object.rectangle.right_side))) {
-        checkFrogAction(object);
-        graphics.print();
+        moveFrogWithLog(object);
+        checkFrogAction(object); // check to do what do with frog based on height
+    }
+}
 
+void Frogger::checkFrogReachedRiver()
+{
+    if(frog->y < water_level) {
+        frogDie = true; // frog can die if it touches water
+    } else {
+        frogDie = false;
     }
 }
 
 void Frogger::checkFrogAction(Object log)
 {
-    if(frog->y < 48-4*6) {
-        //frogOnLog = true;
-        //moveFrogWithLog(log);
-        graphics.printTest();
+    if(frog->y < water_level) { // frog is in water zone
+        frogOnLog = true; // moving same speed as log
+        //frogDie = false;
 
     } else { // frog is on the road 
-        //frog->reset(); // crashed with car so reset
+        state_frog = 0; // facing upward
+        
+        frog->reset(); // crashed with car so reset
+        
+        frogOnLog = false;
+        frogDie = false;
     }
 }
 
-void Frogger::moveFrogWithLog(Object *log)
+void Frogger::moveFrogWithLog(Object log)
 {
-    switch (log->object.dir)
-    {
-        case 1:
-            frog->x += log->speed;
-            break;
-            
-        case 2:
-            frog->x -= log->speed;
-            break;
+    if(log.seperation != 0){
+        switch (log.object.dir)
+        {
+            case 1:
+                frog->x += log.speed;
+                break;
+                
+            case 2:
+                frog->x = frog->x - log.speed;
+                break;
+        } 
     }
 }
 
@@ -514,68 +547,3 @@
     return (rand() % 4) + 1;
 }
 
-void Frogger::createMultipleSafetyLane()
-{
-
-}
-
-void Frogger::createSafetyObject()
-{
-     
-}
-
-void Frogger::drawSafety()
-{
-    //graphics.drawSafetyLanes(safety_lane);   
-}
-
-
-void Frogger::createMultipleRoadLane()
-{
-   
-}
-
-// every level is going to have the same amount of blocks
-void Frogger::createRoadLane()
-{       
-    
-}
-
-void Frogger::drawRoadObjects()
-{
-    //graphics.getRoadObjects(roads);
-}
-
-void Frogger::createMultipleLanesWater()
-{ 
- 
-  
-}
-
-void Frogger::createWaterLane(){
- 
-}
-
-// moves the water based on the velocity
-void Frogger::moveWater()
-{
-   
-    //loopWater(water_lanes); 
-}
-
-
-void Frogger::loopWater()
-{ 
-  
-}
-
-void Frogger::drawWater()
-{
-   // graphics.drawWater(water);         
-}
-
-void Frogger::drawEndPost()
-{
-    //graphics.drawGoal(84/2)-grid/2, 48-grid*11);     
-}
-