Sound update

Dependencies:   4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed

Revision:
26:163d7ca8c42d
Parent:
23:214c0c828d98
Child:
27:a09981ebd532
--- a/tetris/tetris.cpp	Thu Dec 08 00:37:55 2022 +0000
+++ b/tetris/tetris.cpp	Thu Dec 08 02:12:14 2022 +0000
@@ -1,17 +1,13 @@
 #include "mbed.h"
-//#include "uLCD_4DGL.h"
 #include "Game.h"
 #include "globals.h"
-//#include "Nav_Switch.h"
 
-//uLCD_4DGL uLCD(p13, p14, p30);
-//Nav_Switch myNav(p20, p16, p17, p15, p19); // pins(up, down, left, right, fire)
 
 int SinglePiecePoints = 50;
 int LineClearPoints = 200;
 int key_input = 0;
 bool gameStarted = false;
-void input_left()   // FIX
+void input_left()
 {
     if(!gameStarted)
     {   gameStarted=true;
@@ -47,6 +43,15 @@
     key_input=4;
 }
 
+void input_menu()
+{
+    if(!gameStarted)
+    {   gameStarted=true;
+        return;
+    }
+    key_input = 5;
+}
+
 void clear_board()
 {
     uLCD.filled_rectangle(20,0,79,128,0);
@@ -66,15 +71,6 @@
 }
 
 
-/*int RandomGen(char range)
-{
-    pc.printf("%c",range);
-    while(!pc.readable()) wait(0.5);
-    char buffer[4];
-    pc.gets(buffer,4);
-    int i = buffer[0]-'0';
-    return i;
-}*/
 
 void tetrisGame()
 {
@@ -85,38 +81,17 @@
         Thread::wait(500);
     }
     
-    /*while(1){
-        uLCD.printf("test");
-    }*/
-    
-    
-    
-    /*if (myNav.up()) input_rotate();
-    if (myNav.down()) input_down();;
-    if (myNav.left()) input_left();
-    if (myNav.right()) input_right();;
-    //check mouse left button click*/   // FIXQ
-    //if (myNav.fire()) input_down; // FIX, CAN ADD MENU FUNCTIONALITY
-    
-    
     
     uLCD.text_width(2);
     uLCD.text_height(2);
     uLCD.color(WHITE);
+    uLCD.locate(1,0);
     uLCD.printf("TETRIS");
     wait(2);
     
     uLCD.baudrate(3000000);
     
     
-    /*pc.baud(9600);
-    pc.format(8,SerialBase::None,1);
-    pc.printf("0");
-    while(!pc.readable()) wait(0.5);
-    char buffer[4];
-    pc.gets(buffer,4);*/
-    
-    
     bool isGameOver = false;
     int mScreenHeight = 128;
     Pieces mPieces;
@@ -143,6 +118,13 @@
     int piece = 0;
     int rotate = 0;
     
+    //float x = 0.0;
+    
+    Rgb = 1;
+    rGb = 0;
+    rgB = 0;
+    int count = 0;
+    
     UpdateGameStatus(mGame.GetPoints());
     
     while (1)
@@ -156,10 +138,10 @@
         }
         
         if (myNav.up()) input_rotate();
-        if (myNav.down()) input_down();;
+        if (myNav.down()) input_down();
         if (myNav.left()) input_left();
-        if (myNav.right()) input_right();;
-        //if (myNav.fire()) input_down; // FIX, CAN ADD MENU FUNCTIONALITY
+        if (myNav.right()) input_right();
+        //if (myNav.fire()) input_menu();
         
         if(isGameOver) 
         {
@@ -168,7 +150,33 @@
             uLCD.text_width(2);
             uLCD.text_height(2);
             uLCD.printf("GAME OVER");
-            while(1);
+            wait(2);
+            uLCD.cls();
+            
+            //isGameOver = false;
+            
+            Thread::wait(1000);
+            
+            mBoard.InitBoard();
+            uLCD.cls();
+            
+            mGame.points = 0;
+            count = 0;
+            
+            //mGame.InitGame();
+            isGameOver = false;
+            
+            menu_flag = 0;
+            
+            game1 = false;
+            
+            
+            //mBoard.InitBoard();
+            
+            //free(mPieces);
+            //free(mBoard);
+            //free(mGame);
+            
         }
         // ----- Draw ----
         if(needErase)
@@ -212,8 +220,6 @@
                 {
                     mGame.AddClearedLines(linesDeleted);
                     mGame.AddPoints(LineClearPoints*linesDeleted);
-                    //Thread t1(FlashLight);
-                    //PlayClearSound();
                     clear_board();
                 }
                 UpdateGameStatus(mGame.GetPoints()); // FIX
@@ -246,6 +252,25 @@
                 break;
             }
             
+            case (5)://menu
+            {
+                wait(1);
+                uLCD.cls();
+                uLCD.text_width(2);
+                uLCD.text_height(2);
+                uLCD.printf("MENU");
+                wait(2);
+                uLCD.cls();
+                
+                Thread::wait(1000); // FIX?
+                
+                menu_flag = 0;
+                
+                game1 = false;  // FIX? put after Thread::wait()
+            
+                
+            }
+            
             case (0):{break;}
         }
         key_input = 0;
@@ -270,8 +295,6 @@
                     {
                         mGame.AddClearedLines(linesDeleted);
                         mGame.AddPoints(LineClearPoints*linesDeleted);
-                        //Thread t1(FlashLight);
-                        //PlayClearSound();
                         clear_board();
                     }
                     UpdateGameStatus(mGame.GetPoints());
@@ -297,5 +320,47 @@
             timer.reset();
         }
             wait(0.1);
+            
+            //get a new random number for PWM
+        //x = rand() / float(RAND_MAX);
+        //add some exponential brightness scaling
+        //for more of a fast flash effect
+        /*x = x*x*x;
+        Rgb = x;
+        rGb = x;
+        rgB = x;
+        //fast update rate for welding flashes
+        //Thread::wait(20);
+        //add a random pause between welds
+        if (rand() / float(RAND_MAX) > 0.95) {
+            Rgb = 0;
+            rGb = 0;
+            rgB = 0;
+            //Thread::wait(4000.0 * rand() / float(RAND_MAX));
+        }*/
+        if (count % 10 == 0) {
+            if (Rgb == 1) {
+                Rgb = 0;
+                rGb = 1;
+                rgB = 0;
+            }
+            
+            else if (rGb == 1) {
+                Rgb = 0;
+                rGb = 0;
+                rgB = 1;
+            }
+             else if (rgB == 1) {
+                Rgb = 1;
+                rGb = 0;
+                rgB = 0;
+            } else if (Rgb == 0) {
+                Rgb = 0;
+                rGb = 1;
+                rgB = 0;
+            }
+        }
+        
+        count++;
     }
 }