Sound update
Dependencies: 4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed
Diff: tetris/tetris.cpp
- 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++; } }