hgftf

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Revision:
8:34fd253d0fa5
Parent:
7:7ab2f4b09196
Child:
9:d09b96b6c39c
--- a/main.cpp	Fri Nov 20 01:55:19 2020 +0000
+++ b/main.cpp	Fri Nov 20 03:15:35 2020 +0000
@@ -82,7 +82,7 @@
 #define GAME_OVER 7
 #define FULL_DRAW 8
 #define HAX 9
-#define NOT_UP 10
+#define PAUSE 10
 #define IN_GAME_MENU 11
 #define NOT_RIGHT 12
 #define SNAKE_MAX_LENGTH 50
@@ -114,6 +114,10 @@
    if (!inputs.b1) {
       return HAX;
    }
+   
+   if (!inputs.b2) {
+    return PAUSE;
+   }
     
     // if we do not satisfy these conditions then 
     // no action is done
@@ -236,8 +240,8 @@
       do {
          input = read_inputs();   
       } while(input.b2);
-        
-      uLCD.filled_rectangle(0, 0, 255, 255, BLACK);
+      
+      uLCD.filled_rectangle(0, 0, 255, 255, BLACK);  
       main();
           
    }
@@ -815,7 +819,8 @@
 
 void go_left2() {
    
-   if (get_here(snake.head_x - 1, snake.head_y)->walkable) {
+   if (!(get_here(snake.head_x - 1, snake.head_y)->walkable)) {
+       pc.printf("SUCCESS!\n\n");
        return;
     }
 
@@ -892,6 +897,11 @@
     draw_game(WIN_GAME);    
     }
     
+        uLCD.filled_rectangle(0,     9, 127,  14, 0xFFFFFF); // Top
+        uLCD.filled_rectangle(0,    13,   2, 114, 0xFFFFFF); // Left
+        uLCD.filled_rectangle(0,   114, 127, 117, 0xFFFFFF); // Bottom
+        uLCD.filled_rectangle(124,  14, 127, 117, 0xFFFFFF); // Right
+        draw_nothing(102, 100);
     
     //pc.printf("Shield Counter: %d\n", shieldCounter);
    switch(action) {
@@ -911,10 +921,12 @@
             pc.printf("blueCounter: %d\n", blueCounter);
             pc.printf("redCounter: %d", redCounter);
             if (reverseCounter == 0) {
-            go_right2();   
+            go_right2(); 
+            draw_arrow_right(113, 100);  
             }
             if (reverseCounter <= 20 && reverseCounter != 0) {
             go_left2(); 
+            draw_arrow_left(113, 100);
             pc.printf("reverseCounter: %d", reverseCounter);
             reverseCounter--;  
             }
@@ -1097,9 +1109,11 @@
              pc.printf("redCounter: %d", redCounter);
             if (reverseCounter == 0) {
             go_left2();
+            draw_arrow_left(113, 100);
             }
             if (reverseCounter <= 20 && reverseCounter != 0) {
-            go_right2();  
+            go_right2();
+            draw_arrow_right(113, 100);  
             pc.printf("reverseCounter: %d", reverseCounter);
             reverseCounter--;  
             }
@@ -1282,9 +1296,11 @@
             // reverse direction 
             if (reverseCounter == 0) {
             go_up2();
+            draw_arrow_up(113, 100);
             }
             if (reverseCounter <= 20 && reverseCounter != 0) {
-            go_down2();   
+            go_down2(); 
+            draw_arrow_down(113, 100);  
             pc.printf("reverseCounter: %d", reverseCounter);
             reverseCounter--;
             }
@@ -1467,9 +1483,11 @@
             pc.printf("redCounter: %d", redCounter);
             if (reverseCounter == 0) {
             go_down2();
+            draw_arrow_down(113, 100);
             }
             if (reverseCounter <= 20 && reverseCounter !=0) {
             go_up2();    
+            draw_arrow_up(113, 100);
             pc.printf("reverseCounter: %d", reverseCounter);
             reverseCounter--;
             }
@@ -1642,6 +1660,45 @@
       case HAX: 
          invincibility = true;
          break;
+         
+      case PAUSE:
+        uLCD.filled_rectangle(0, 0, 255, 255, BLACK);
+        uLCD.filled_rectangle(0,     9, 127,  14, 0xFFFFFF); // Top
+        uLCD.filled_rectangle(0,    13,   2, 114, 0xFFFFFF); // Left
+        uLCD.filled_rectangle(0,   114, 127, 117, 0xFFFFFF); // Bottom
+        uLCD.filled_rectangle(124,  14, 127, 117, 0xFFFFFF); // Right();
+        
+      int u = 58;
+      int v = 56;
+      uLCD.filled_rectangle(0, 0, 255, 255, BLACK);
+      uLCD.text_width(1);
+      uLCD.text_height(1);
+      uLCD.locate(5,7);
+      uLCD.color(RED);
+      uLCD.printf("PAUSING...\n");
+      draw_snake_head(u+11, v+11);
+      draw_snake_body(u, v+11);
+      draw_snake_tail(u-11, v+11);
+        
+      uLCD.textbackground_color(BLACK);
+      uLCD.color(0xFFFFFF);
+      uLCD.text_width(1);
+      uLCD.text_height(1);
+      uLCD.locate(4, 10);
+      uLCD.printf("Press  'B2'\n");
+      uLCD.locate(5, 11);
+      uLCD.printf("to unpause!\n");
+         
+      do {
+        input = read_inputs();    
+      } while(input.b2);
+      
+        uLCD.filled_rectangle(0,     9, 127,  14, 0xFFFFFF); // Top
+        uLCD.filled_rectangle(0,    13,   2, 114, 0xFFFFFF); // Left
+        uLCD.filled_rectangle(0,   114, 127, 117, 0xFFFFFF); // Bottom
+        uLCD.filled_rectangle(124,  14, 127, 117, 0xFFFFFF); // Right
+        uLCD.filled_rectangle(0, 0, 255, 255, BLACK);
+        break;
         
       default: 
          break;