Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Revision:
4:1fe015b66bb8
Parent:
3:fbb1fa853f09
Child:
5:e4df87957a5b
--- a/StartScreen/StartScreen.cpp	Sun Mar 17 09:54:49 2019 +0000
+++ b/StartScreen/StartScreen.cpp	Sun Mar 17 13:47:40 2019 +0000
@@ -50,9 +50,9 @@
     {0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,0,1,1,0,0,1,1,0,0,0},
     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
 
-    };
+};
     
-    int arrow[7][9] = {
+int arrow[7][9] = {
     {0,0,0,0,1,0,0,0,0},
     {0,0,0,1,1,0,0,0,0},
     {0,0,1,1,1,0,0,0,0},
@@ -60,8 +60,57 @@
     {0,0,1,1,1,0,0,0,0},
     {0,0,0,1,1,0,0,0,0},
     {0,0,0,0,1,0,0,0,0},
-    };
+};
+    
+int bullet[13][5] = {
+    {1,0,0,0,1},
+    {1,0,0,0,1},
+    {0,1,0,1,0},
+    {0,0,1,0,0},
+    {0,0,0,0,0},
+    {0,0,1,0,0},
+    {0,0,1,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,1,0,0},
+    {0,0,1,0,0},
+};
+int navL[13][8] = {
+    {0,0,0,0,0,0,1,1},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {1,1,0,0,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,0,0,1,1},
+};
 
+int navR[13][8] = {
+    {1,1,0,0,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,0,0,1,1},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {1,1,0,0,0,0,0,0},
+};
+int i=16;
+int lr=1;
+int gs=1; 
 StartScreen::StartScreen()
 {
     
@@ -108,15 +157,14 @@
     lcd.printString("Adamjee",20,4);
     lcd.printString("201161436",15,5);
     lcd.refresh();
-    wait(3);
+    wait(2);
     lcd.clear();
 }
 
 void StartScreen::menu_screen1(N5110 &lcd, Gamepad &pad)
 {
-    int i=16;
     lcd.drawSprite(50,i,7,9,(int *)arrow);
-    while (1) {  //Change this to if button pressed.
+    while ((pad.check_event(Gamepad::JOY_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
         lcd.printString("SnakeVSBlock",5,0);
         lcd.printString("Play",0,2);
         lcd.printString("Settings",0,3);
@@ -131,7 +179,132 @@
         }
         lcd.drawSprite(50,i,7,9,(int *)arrow); //Function used to draw the sprite.
         lcd.refresh();
-        wait(0.2);
+        wait(0.25);
         lcd.clear();
     }
+    
+    if(i == 16)
+    {
+        menu_screen2(lcd, pad);
+    }
+    else
+    {
+        menu_screen1(lcd, pad);
+        lr=1;
+    }
 }
+void StartScreen::menu_screen2(N5110 &lcd, Gamepad &pad)
+{
+    lcd.clear();
+    wait(0.2);
+    
+    while ((pad.check_event(Gamepad::JOY_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
+        
+        Direction d = pad.get_direction();
+        wait(0.25);
+    
+        if(((d==E)||(d==W))&&(lr==1))  {
+            lr=2;
+        }
+        
+        else if(((d==E)||(d==W))&&(lr==2))  {
+            lr=1;
+        }
+        
+        if(lr==1)  {
+            lcd.clear();
+            lcd.drawRect(27,18,30,20,FILL_TRANSPARENT);
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Free Wave",14,1);
+            lcd.refresh();
+        }
+        if(lr==2)  {
+            lcd.clear();
+            lcd.drawRect(27,18,30,20,FILL_TRANSPARENT);
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Bullet Shower",4,1);
+            lcd.drawSprite(29,19,13,5,(int *)bullet); //Function used to draw the sprite.
+            lcd.refresh();
+        }
+        if (pad.check_event(Gamepad::BACK_PRESSED) == true) { 
+            lcd.clear();
+            menu_screen1(lcd, pad);
+        }   
+    }
+    
+    lcd.clear();
+    wait(0.25);
+    menu_screen3(lcd, pad);
+}
+void StartScreen::menu_screen3(N5110 &lcd, Gamepad &pad)
+{
+    lcd.clear();
+    wait(0.2);
+    
+    while ((pad.check_event(Gamepad::JOY_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
+        
+        Direction d = pad.get_direction();
+        wait(0.25);
+    
+        if((d==E)&&(gs==4))  {
+            gs=1;
+        }
+        
+        else if((d==W)&&(gs==1))  {
+            gs=4;
+        }
+        
+        else if((d==E)&&(1<=gs<=3))  {
+            gs=gs+1;
+        }
+        
+        else if((d==W)&&(2<=gs<=4))  {
+            gs=gs-1;
+        }
+        
+        if(gs==1)  {
+            lcd.clear();
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Game Speed",10,1);
+            lcd.printString("SNAIL",26,3);
+            lcd.refresh();
+        }
+        if(gs==2)  {
+            lcd.clear();
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Game Speed",10,1);
+            lcd.printString("TURTLE",24,3);
+            lcd.refresh();
+        }
+        if(gs==3)  {
+            lcd.clear();
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Game Speed",10,1);
+            lcd.printString("RABBIT",24,3);
+            lcd.refresh();
+        }
+        if(gs==4)  {
+            lcd.clear();
+            lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+            lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+            lcd.printString("Game Speed",10,1);
+            lcd.printString("CHEETHA",21,3);
+            lcd.refresh();
+        }
+        
+        if (pad.check_event(Gamepad::BACK_PRESSED) == true) {
+            lcd.clear();
+            wait(0.25);
+            menu_screen2(lcd, pad);
+        }
+    }
+    
+    lcd.clear();
+    wait(0.25);
+    menu_screen3(lcd, pad);
+}
\ No newline at end of file