Sound update
Dependencies: 4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed
tetris/tetris.cpp@28:bccd14334bb9, 22 months ago (annotated)
- Committer:
- jaybalar
- Date:
- Fri Dec 09 20:29:08 2022 +0000
- Revision:
- 28:bccd14334bb9
- Parent:
- 27:a09981ebd532
Sound update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jstephens78 | 19:6d9bee043ede | 1 | #include "mbed.h" |
jstephens78 | 19:6d9bee043ede | 2 | #include "Game.h" |
jsanchez307 | 23:214c0c828d98 | 3 | #include "globals.h" |
jstephens78 | 19:6d9bee043ede | 4 | |
jstephens78 | 19:6d9bee043ede | 5 | |
jstephens78 | 19:6d9bee043ede | 6 | int SinglePiecePoints = 50; |
jstephens78 | 19:6d9bee043ede | 7 | int LineClearPoints = 200; |
jstephens78 | 19:6d9bee043ede | 8 | int key_input = 0; |
jstephens78 | 19:6d9bee043ede | 9 | bool gameStarted = false; |
jsanchez307 | 26:163d7ca8c42d | 10 | void input_left() |
jstephens78 | 19:6d9bee043ede | 11 | { |
jstephens78 | 19:6d9bee043ede | 12 | if(!gameStarted) |
jstephens78 | 19:6d9bee043ede | 13 | { gameStarted=true; |
jstephens78 | 19:6d9bee043ede | 14 | return; |
jstephens78 | 19:6d9bee043ede | 15 | } |
jstephens78 | 19:6d9bee043ede | 16 | key_input = 1; |
jstephens78 | 19:6d9bee043ede | 17 | } |
jstephens78 | 19:6d9bee043ede | 18 | |
jstephens78 | 19:6d9bee043ede | 19 | void input_right() |
jstephens78 | 19:6d9bee043ede | 20 | { |
jstephens78 | 19:6d9bee043ede | 21 | if(!gameStarted) |
jstephens78 | 19:6d9bee043ede | 22 | { gameStarted=true; |
jstephens78 | 19:6d9bee043ede | 23 | return; |
jstephens78 | 19:6d9bee043ede | 24 | } |
jstephens78 | 19:6d9bee043ede | 25 | key_input = 2; |
jstephens78 | 19:6d9bee043ede | 26 | } |
jstephens78 | 19:6d9bee043ede | 27 | |
jstephens78 | 19:6d9bee043ede | 28 | void input_rotate() |
jstephens78 | 19:6d9bee043ede | 29 | { |
jstephens78 | 19:6d9bee043ede | 30 | if(!gameStarted) |
jstephens78 | 19:6d9bee043ede | 31 | { gameStarted=true; |
jstephens78 | 19:6d9bee043ede | 32 | return; |
jstephens78 | 19:6d9bee043ede | 33 | } |
jstephens78 | 19:6d9bee043ede | 34 | key_input = 3; |
jstephens78 | 19:6d9bee043ede | 35 | } |
jstephens78 | 19:6d9bee043ede | 36 | |
jstephens78 | 19:6d9bee043ede | 37 | void input_down() |
jstephens78 | 19:6d9bee043ede | 38 | { |
jstephens78 | 19:6d9bee043ede | 39 | if(!gameStarted) |
jstephens78 | 19:6d9bee043ede | 40 | { gameStarted=true; |
jstephens78 | 19:6d9bee043ede | 41 | return; |
jstephens78 | 19:6d9bee043ede | 42 | } |
jstephens78 | 19:6d9bee043ede | 43 | key_input=4; |
jstephens78 | 19:6d9bee043ede | 44 | } |
jstephens78 | 19:6d9bee043ede | 45 | |
jsanchez307 | 26:163d7ca8c42d | 46 | void input_menu() |
jsanchez307 | 26:163d7ca8c42d | 47 | { |
jsanchez307 | 26:163d7ca8c42d | 48 | if(!gameStarted) |
jsanchez307 | 26:163d7ca8c42d | 49 | { gameStarted=true; |
jsanchez307 | 26:163d7ca8c42d | 50 | return; |
jsanchez307 | 26:163d7ca8c42d | 51 | } |
jsanchez307 | 26:163d7ca8c42d | 52 | key_input = 5; |
jsanchez307 | 26:163d7ca8c42d | 53 | } |
jsanchez307 | 26:163d7ca8c42d | 54 | |
jstephens78 | 19:6d9bee043ede | 55 | void clear_board() |
jstephens78 | 19:6d9bee043ede | 56 | { |
jstephens78 | 19:6d9bee043ede | 57 | uLCD.filled_rectangle(20,0,79,128,0); |
jstephens78 | 19:6d9bee043ede | 58 | } |
jstephens78 | 19:6d9bee043ede | 59 | |
jstephens78 | 19:6d9bee043ede | 60 | void clear_next_piece() |
jstephens78 | 19:6d9bee043ede | 61 | { |
jstephens78 | 19:6d9bee043ede | 62 | uLCD.filled_rectangle(92,20,122,50,0); |
jstephens78 | 19:6d9bee043ede | 63 | } |
jstephens78 | 19:6d9bee043ede | 64 | |
jsanchez307 | 22:601e6f9077e4 | 65 | void UpdateGameStatus(int points) // used to include int lines |
jstephens78 | 19:6d9bee043ede | 66 | { |
jsanchez307 | 22:601e6f9077e4 | 67 | uLCD.locate(13,12); |
jsanchez307 | 22:601e6f9077e4 | 68 | uLCD.printf("Score"); |
jsanchez307 | 22:601e6f9077e4 | 69 | uLCD.locate(13,13); |
jsanchez307 | 22:601e6f9077e4 | 70 | uLCD.printf("%d",points); |
jstephens78 | 19:6d9bee043ede | 71 | } |
jstephens78 | 19:6d9bee043ede | 72 | |
jstephens78 | 19:6d9bee043ede | 73 | |
jstephens78 | 19:6d9bee043ede | 74 | |
jsanchez307 | 22:601e6f9077e4 | 75 | void tetrisGame() |
jstephens78 | 19:6d9bee043ede | 76 | { |
jsanchez307 | 23:214c0c828d98 | 77 | PRINTF("POINT 1"); |
jsanchez307 | 23:214c0c828d98 | 78 | while (game1 == false) { |
jsanchez307 | 23:214c0c828d98 | 79 | |
jsanchez307 | 23:214c0c828d98 | 80 | PRINTF("[TETRIS] Idle\r\n"); |
jsanchez307 | 23:214c0c828d98 | 81 | Thread::wait(500); |
jsanchez307 | 23:214c0c828d98 | 82 | } |
jsanchez307 | 23:214c0c828d98 | 83 | |
jsanchez307 | 22:601e6f9077e4 | 84 | |
jsanchez307 | 22:601e6f9077e4 | 85 | uLCD.text_width(2); |
jsanchez307 | 22:601e6f9077e4 | 86 | uLCD.text_height(2); |
jsanchez307 | 22:601e6f9077e4 | 87 | uLCD.color(WHITE); |
jsanchez307 | 26:163d7ca8c42d | 88 | uLCD.locate(1,0); |
jsanchez307 | 22:601e6f9077e4 | 89 | uLCD.printf("TETRIS"); |
jaybalar | 27:a09981ebd532 | 90 | Thread::wait(2000); |
jsanchez307 | 22:601e6f9077e4 | 91 | |
jstephens78 | 19:6d9bee043ede | 92 | uLCD.baudrate(3000000); |
jstephens78 | 19:6d9bee043ede | 93 | |
jstephens78 | 20:73e4f12277bd | 94 | |
jstephens78 | 19:6d9bee043ede | 95 | bool isGameOver = false; |
jstephens78 | 19:6d9bee043ede | 96 | int mScreenHeight = 128; |
jstephens78 | 19:6d9bee043ede | 97 | Pieces mPieces; |
jstephens78 | 19:6d9bee043ede | 98 | Board mBoard (&mPieces, mScreenHeight); |
jsanchez307 | 22:601e6f9077e4 | 99 | int a = 1; // RandomGen('a') |
jsanchez307 | 22:601e6f9077e4 | 100 | int b = 2; |
jsanchez307 | 22:601e6f9077e4 | 101 | int c = 3; |
jsanchez307 | 22:601e6f9077e4 | 102 | int d = 4; |
jstephens78 | 19:6d9bee043ede | 103 | Game mGame (&mBoard, &mPieces, mScreenHeight, &uLCD,a,b,c,d); |
jstephens78 | 19:6d9bee043ede | 104 | |
jstephens78 | 19:6d9bee043ede | 105 | |
jstephens78 | 19:6d9bee043ede | 106 | // ----- Main Loop ----- |
jstephens78 | 19:6d9bee043ede | 107 | int prevX=0; |
jstephens78 | 19:6d9bee043ede | 108 | int prevY=0; |
jstephens78 | 19:6d9bee043ede | 109 | int prevPiece=-1; |
jstephens78 | 19:6d9bee043ede | 110 | int prevRot=0; |
jstephens78 | 19:6d9bee043ede | 111 | Timer timer; |
jstephens78 | 19:6d9bee043ede | 112 | timer.start(); |
jstephens78 | 19:6d9bee043ede | 113 | key_input=0; |
jstephens78 | 19:6d9bee043ede | 114 | bool needErase = false; |
jstephens78 | 19:6d9bee043ede | 115 | uLCD.cls(); |
jsanchez307 | 22:601e6f9077e4 | 116 | |
jsanchez307 | 22:601e6f9077e4 | 117 | |
jsanchez307 | 22:601e6f9077e4 | 118 | int piece = 0; |
jsanchez307 | 22:601e6f9077e4 | 119 | int rotate = 0; |
jsanchez307 | 22:601e6f9077e4 | 120 | |
jsanchez307 | 26:163d7ca8c42d | 121 | //float x = 0.0; |
jsanchez307 | 26:163d7ca8c42d | 122 | |
jsanchez307 | 26:163d7ca8c42d | 123 | Rgb = 1; |
jsanchez307 | 26:163d7ca8c42d | 124 | rGb = 0; |
jsanchez307 | 26:163d7ca8c42d | 125 | rgB = 0; |
jsanchez307 | 26:163d7ca8c42d | 126 | int count = 0; |
jsanchez307 | 26:163d7ca8c42d | 127 | |
jsanchez307 | 22:601e6f9077e4 | 128 | UpdateGameStatus(mGame.GetPoints()); |
jsanchez307 | 22:601e6f9077e4 | 129 | |
jstephens78 | 19:6d9bee043ede | 130 | while (1) |
jstephens78 | 19:6d9bee043ede | 131 | { |
jsanchez307 | 23:214c0c828d98 | 132 | PRINTF("POINT 2"); |
jsanchez307 | 23:214c0c828d98 | 133 | // Wait until the game starts |
jsanchez307 | 23:214c0c828d98 | 134 | while (game1 == false) { |
jsanchez307 | 23:214c0c828d98 | 135 | |
jsanchez307 | 23:214c0c828d98 | 136 | PRINTF("[TETRIS] Idle\r\n"); |
jsanchez307 | 23:214c0c828d98 | 137 | Thread::wait(500); |
jsanchez307 | 23:214c0c828d98 | 138 | } |
jsanchez307 | 23:214c0c828d98 | 139 | |
jsanchez307 | 22:601e6f9077e4 | 140 | if (myNav.up()) input_rotate(); |
jsanchez307 | 26:163d7ca8c42d | 141 | if (myNav.down()) input_down(); |
jsanchez307 | 22:601e6f9077e4 | 142 | if (myNav.left()) input_left(); |
jsanchez307 | 26:163d7ca8c42d | 143 | if (myNav.right()) input_right(); |
jsanchez307 | 26:163d7ca8c42d | 144 | //if (myNav.fire()) input_menu(); |
jsanchez307 | 22:601e6f9077e4 | 145 | |
jstephens78 | 19:6d9bee043ede | 146 | if(isGameOver) |
jstephens78 | 19:6d9bee043ede | 147 | { |
jaybalar | 27:a09981ebd532 | 148 | Thread::wait(1000); |
jsanchez307 | 22:601e6f9077e4 | 149 | uLCD.cls(); |
jsanchez307 | 22:601e6f9077e4 | 150 | uLCD.text_width(2); |
jsanchez307 | 22:601e6f9077e4 | 151 | uLCD.text_height(2); |
jsanchez307 | 22:601e6f9077e4 | 152 | uLCD.printf("GAME OVER"); |
jaybalar | 27:a09981ebd532 | 153 | Thread::wait(2000); |
jsanchez307 | 26:163d7ca8c42d | 154 | uLCD.cls(); |
jsanchez307 | 26:163d7ca8c42d | 155 | |
jsanchez307 | 26:163d7ca8c42d | 156 | //isGameOver = false; |
jsanchez307 | 26:163d7ca8c42d | 157 | |
jsanchez307 | 26:163d7ca8c42d | 158 | Thread::wait(1000); |
jsanchez307 | 26:163d7ca8c42d | 159 | |
jsanchez307 | 26:163d7ca8c42d | 160 | mBoard.InitBoard(); |
jsanchez307 | 26:163d7ca8c42d | 161 | uLCD.cls(); |
jsanchez307 | 26:163d7ca8c42d | 162 | |
jsanchez307 | 26:163d7ca8c42d | 163 | mGame.points = 0; |
jsanchez307 | 26:163d7ca8c42d | 164 | count = 0; |
jsanchez307 | 26:163d7ca8c42d | 165 | |
jsanchez307 | 26:163d7ca8c42d | 166 | //mGame.InitGame(); |
jsanchez307 | 26:163d7ca8c42d | 167 | isGameOver = false; |
jsanchez307 | 26:163d7ca8c42d | 168 | |
jsanchez307 | 26:163d7ca8c42d | 169 | menu_flag = 0; |
jsanchez307 | 26:163d7ca8c42d | 170 | |
jsanchez307 | 26:163d7ca8c42d | 171 | game1 = false; |
jsanchez307 | 26:163d7ca8c42d | 172 | |
jsanchez307 | 26:163d7ca8c42d | 173 | |
jsanchez307 | 26:163d7ca8c42d | 174 | //mBoard.InitBoard(); |
jsanchez307 | 26:163d7ca8c42d | 175 | |
jsanchez307 | 26:163d7ca8c42d | 176 | //free(mPieces); |
jsanchez307 | 26:163d7ca8c42d | 177 | //free(mBoard); |
jsanchez307 | 26:163d7ca8c42d | 178 | //free(mGame); |
jsanchez307 | 26:163d7ca8c42d | 179 | |
jstephens78 | 19:6d9bee043ede | 180 | } |
jstephens78 | 19:6d9bee043ede | 181 | // ----- Draw ---- |
jstephens78 | 19:6d9bee043ede | 182 | if(needErase) |
jstephens78 | 19:6d9bee043ede | 183 | { |
jstephens78 | 19:6d9bee043ede | 184 | mGame.ErasePiece(prevX,prevY,prevPiece,prevRot); |
jstephens78 | 19:6d9bee043ede | 185 | needErase=false; |
jstephens78 | 19:6d9bee043ede | 186 | } |
jstephens78 | 19:6d9bee043ede | 187 | mGame.DrawScene(); |
jstephens78 | 19:6d9bee043ede | 188 | |
jstephens78 | 19:6d9bee043ede | 189 | prevX=mGame.mPosX; |
jstephens78 | 19:6d9bee043ede | 190 | prevY=mGame.mPosY; |
jstephens78 | 19:6d9bee043ede | 191 | prevPiece=mGame.mPiece; |
jstephens78 | 19:6d9bee043ede | 192 | prevRot=mGame.mRotation; |
jsanchez307 | 22:601e6f9077e4 | 193 | |
jstephens78 | 19:6d9bee043ede | 194 | // ----- Input ----- |
jstephens78 | 19:6d9bee043ede | 195 | switch (key_input) |
jstephens78 | 19:6d9bee043ede | 196 | { |
jstephens78 | 19:6d9bee043ede | 197 | case (2): //right |
jstephens78 | 19:6d9bee043ede | 198 | { |
jstephens78 | 19:6d9bee043ede | 199 | if (mBoard.IsPossibleMovement (mGame.mPosX + 1, mGame.mPosY, mGame.mPiece, mGame.mRotation)) |
jstephens78 | 19:6d9bee043ede | 200 | {mGame.mPosX++;needErase=true;} |
jstephens78 | 19:6d9bee043ede | 201 | break; |
jstephens78 | 19:6d9bee043ede | 202 | } |
jstephens78 | 19:6d9bee043ede | 203 | |
jstephens78 | 19:6d9bee043ede | 204 | case (1): //left |
jstephens78 | 19:6d9bee043ede | 205 | { |
jstephens78 | 19:6d9bee043ede | 206 | if (mBoard.IsPossibleMovement (mGame.mPosX - 1, mGame.mPosY, mGame.mPiece, mGame.mRotation)) |
jstephens78 | 19:6d9bee043ede | 207 | {mGame.mPosX--;needErase=true;} |
jstephens78 | 19:6d9bee043ede | 208 | break; |
jstephens78 | 19:6d9bee043ede | 209 | } |
jstephens78 | 19:6d9bee043ede | 210 | |
jstephens78 | 19:6d9bee043ede | 211 | case (4)://down |
jstephens78 | 19:6d9bee043ede | 212 | { |
jstephens78 | 19:6d9bee043ede | 213 | // Check collision from up to down |
jstephens78 | 19:6d9bee043ede | 214 | while (mBoard.IsPossibleMovement(mGame.mPosX, mGame.mPosY, mGame.mPiece, mGame.mRotation)) { mGame.mPosY++; } |
jstephens78 | 19:6d9bee043ede | 215 | needErase=true; |
jstephens78 | 19:6d9bee043ede | 216 | mBoard.StorePiece (mGame.mPosX, mGame.mPosY - 1, mGame.mPiece, mGame.mRotation); |
jaybalar | 28:bccd14334bb9 | 217 | Rgb = 1; |
jaybalar | 28:bccd14334bb9 | 218 | rGb = 1; |
jaybalar | 28:bccd14334bb9 | 219 | rgB = 1; |
jaybalar | 28:bccd14334bb9 | 220 | Thread::wait(100); |
jaybalar | 28:bccd14334bb9 | 221 | Rgb = 0; |
jaybalar | 28:bccd14334bb9 | 222 | rGb = 0; |
jaybalar | 28:bccd14334bb9 | 223 | rgB = 0; |
jstephens78 | 19:6d9bee043ede | 224 | mGame.AddPoints(SinglePiecePoints); |
jstephens78 | 19:6d9bee043ede | 225 | int linesDeleted = mBoard.DeletePossibleLines (); |
jstephens78 | 19:6d9bee043ede | 226 | if(linesDeleted>0) |
jstephens78 | 19:6d9bee043ede | 227 | { |
jstephens78 | 19:6d9bee043ede | 228 | mGame.AddClearedLines(linesDeleted); |
jstephens78 | 19:6d9bee043ede | 229 | mGame.AddPoints(LineClearPoints*linesDeleted); |
jstephens78 | 19:6d9bee043ede | 230 | clear_board(); |
jstephens78 | 19:6d9bee043ede | 231 | } |
jsanchez307 | 22:601e6f9077e4 | 232 | UpdateGameStatus(mGame.GetPoints()); // FIX |
jstephens78 | 19:6d9bee043ede | 233 | |
jstephens78 | 19:6d9bee043ede | 234 | if (mBoard.IsGameOver()) |
jstephens78 | 19:6d9bee043ede | 235 | { |
jstephens78 | 19:6d9bee043ede | 236 | isGameOver=true; |
jstephens78 | 19:6d9bee043ede | 237 | uLCD.cls(); |
jstephens78 | 19:6d9bee043ede | 238 | |
jstephens78 | 19:6d9bee043ede | 239 | } |
jstephens78 | 19:6d9bee043ede | 240 | |
jstephens78 | 19:6d9bee043ede | 241 | if(!isGameOver) |
jstephens78 | 19:6d9bee043ede | 242 | { |
jsanchez307 | 22:601e6f9077e4 | 243 | mGame.CreateNewPiece(piece,rotate); |
jsanchez307 | 22:601e6f9077e4 | 244 | clear_next_piece(); |
jsanchez307 | 22:601e6f9077e4 | 245 | |
jsanchez307 | 22:601e6f9077e4 | 246 | piece++; |
jsanchez307 | 22:601e6f9077e4 | 247 | rotate++; |
jsanchez307 | 22:601e6f9077e4 | 248 | |
jsanchez307 | 22:601e6f9077e4 | 249 | if (piece==7) piece = 0; |
jsanchez307 | 22:601e6f9077e4 | 250 | if (rotate==4) rotate = 0; |
jstephens78 | 19:6d9bee043ede | 251 | } |
jstephens78 | 19:6d9bee043ede | 252 | break; |
jstephens78 | 19:6d9bee043ede | 253 | } |
jstephens78 | 19:6d9bee043ede | 254 | |
jstephens78 | 19:6d9bee043ede | 255 | case (3)://rotate |
jstephens78 | 19:6d9bee043ede | 256 | { |
jstephens78 | 19:6d9bee043ede | 257 | if (mBoard.IsPossibleMovement (mGame.mPosX, mGame.mPosY, mGame.mPiece, (mGame.mRotation + 1) % 4)) |
jstephens78 | 19:6d9bee043ede | 258 | {mGame.mRotation = (mGame.mRotation + 1) % 4;needErase=true;} |
jstephens78 | 19:6d9bee043ede | 259 | break; |
jstephens78 | 19:6d9bee043ede | 260 | } |
jstephens78 | 19:6d9bee043ede | 261 | |
jsanchez307 | 26:163d7ca8c42d | 262 | case (5)://menu |
jsanchez307 | 26:163d7ca8c42d | 263 | { |
jaybalar | 27:a09981ebd532 | 264 | Thread::wait(1000); |
jsanchez307 | 26:163d7ca8c42d | 265 | uLCD.cls(); |
jsanchez307 | 26:163d7ca8c42d | 266 | uLCD.text_width(2); |
jsanchez307 | 26:163d7ca8c42d | 267 | uLCD.text_height(2); |
jsanchez307 | 26:163d7ca8c42d | 268 | uLCD.printf("MENU"); |
jaybalar | 27:a09981ebd532 | 269 | Thread::wait(2000); |
jsanchez307 | 26:163d7ca8c42d | 270 | uLCD.cls(); |
jsanchez307 | 26:163d7ca8c42d | 271 | |
jsanchez307 | 26:163d7ca8c42d | 272 | Thread::wait(1000); // FIX? |
jsanchez307 | 26:163d7ca8c42d | 273 | |
jsanchez307 | 26:163d7ca8c42d | 274 | menu_flag = 0; |
jsanchez307 | 26:163d7ca8c42d | 275 | |
jsanchez307 | 26:163d7ca8c42d | 276 | game1 = false; // FIX? put after Thread::wait() |
jsanchez307 | 26:163d7ca8c42d | 277 | |
jsanchez307 | 26:163d7ca8c42d | 278 | |
jsanchez307 | 26:163d7ca8c42d | 279 | } |
jsanchez307 | 26:163d7ca8c42d | 280 | |
jstephens78 | 19:6d9bee043ede | 281 | case (0):{break;} |
jstephens78 | 19:6d9bee043ede | 282 | } |
jstephens78 | 19:6d9bee043ede | 283 | key_input = 0; |
jstephens78 | 19:6d9bee043ede | 284 | |
jstephens78 | 19:6d9bee043ede | 285 | // ----- Vertical movement ----- |
jsanchez307 | 22:601e6f9077e4 | 286 | |
jstephens78 | 19:6d9bee043ede | 287 | if(timer.read_ms()>WAIT_TIME) |
jstephens78 | 19:6d9bee043ede | 288 | { |
jstephens78 | 19:6d9bee043ede | 289 | needErase=true; |
jstephens78 | 19:6d9bee043ede | 290 | if(!isGameOver) |
jstephens78 | 19:6d9bee043ede | 291 | { |
jstephens78 | 19:6d9bee043ede | 292 | if (mBoard.IsPossibleMovement (mGame.mPosX, mGame.mPosY + 1, mGame.mPiece, mGame.mRotation)) |
jstephens78 | 19:6d9bee043ede | 293 | { |
jstephens78 | 19:6d9bee043ede | 294 | mGame.mPosY++; |
jstephens78 | 19:6d9bee043ede | 295 | } |
jstephens78 | 19:6d9bee043ede | 296 | else |
jstephens78 | 19:6d9bee043ede | 297 | { |
jstephens78 | 19:6d9bee043ede | 298 | mBoard.StorePiece (mGame.mPosX, mGame.mPosY, mGame.mPiece, mGame.mRotation); |
jstephens78 | 19:6d9bee043ede | 299 | mGame.AddPoints(SinglePiecePoints); |
jstephens78 | 19:6d9bee043ede | 300 | int linesDeleted = mBoard.DeletePossibleLines (); |
jstephens78 | 19:6d9bee043ede | 301 | if(linesDeleted>0) |
jstephens78 | 19:6d9bee043ede | 302 | { |
jstephens78 | 19:6d9bee043ede | 303 | mGame.AddClearedLines(linesDeleted); |
jstephens78 | 19:6d9bee043ede | 304 | mGame.AddPoints(LineClearPoints*linesDeleted); |
jstephens78 | 19:6d9bee043ede | 305 | clear_board(); |
jstephens78 | 19:6d9bee043ede | 306 | } |
jsanchez307 | 22:601e6f9077e4 | 307 | UpdateGameStatus(mGame.GetPoints()); |
jstephens78 | 19:6d9bee043ede | 308 | |
jstephens78 | 19:6d9bee043ede | 309 | if (mBoard.IsGameOver()) |
jstephens78 | 19:6d9bee043ede | 310 | { |
jstephens78 | 19:6d9bee043ede | 311 | isGameOver=true; |
jstephens78 | 19:6d9bee043ede | 312 | uLCD.cls(); |
jstephens78 | 19:6d9bee043ede | 313 | } |
jstephens78 | 19:6d9bee043ede | 314 | |
jstephens78 | 19:6d9bee043ede | 315 | if(!isGameOver) |
jstephens78 | 19:6d9bee043ede | 316 | { |
jsanchez307 | 22:601e6f9077e4 | 317 | mGame.CreateNewPiece(piece,rotate); |
jsanchez307 | 22:601e6f9077e4 | 318 | clear_next_piece(); // 0-6 Pieces, 0-3 rotations^^ |
jsanchez307 | 22:601e6f9077e4 | 319 | piece++; |
jsanchez307 | 22:601e6f9077e4 | 320 | rotate++; |
jsanchez307 | 22:601e6f9077e4 | 321 | |
jsanchez307 | 22:601e6f9077e4 | 322 | if (piece==7) piece = 0; |
jsanchez307 | 22:601e6f9077e4 | 323 | if (rotate==4) rotate = 0; |
jstephens78 | 19:6d9bee043ede | 324 | } |
jstephens78 | 19:6d9bee043ede | 325 | } |
jstephens78 | 19:6d9bee043ede | 326 | } |
jstephens78 | 19:6d9bee043ede | 327 | timer.reset(); |
jstephens78 | 19:6d9bee043ede | 328 | } |
jaybalar | 27:a09981ebd532 | 329 | Thread::wait(100); |
jsanchez307 | 26:163d7ca8c42d | 330 | |
jsanchez307 | 26:163d7ca8c42d | 331 | //get a new random number for PWM |
jsanchez307 | 26:163d7ca8c42d | 332 | //x = rand() / float(RAND_MAX); |
jsanchez307 | 26:163d7ca8c42d | 333 | //add some exponential brightness scaling |
jsanchez307 | 26:163d7ca8c42d | 334 | //for more of a fast flash effect |
jsanchez307 | 26:163d7ca8c42d | 335 | /*x = x*x*x; |
jsanchez307 | 26:163d7ca8c42d | 336 | Rgb = x; |
jsanchez307 | 26:163d7ca8c42d | 337 | rGb = x; |
jsanchez307 | 26:163d7ca8c42d | 338 | rgB = x; |
jsanchez307 | 26:163d7ca8c42d | 339 | //fast update rate for welding flashes |
jsanchez307 | 26:163d7ca8c42d | 340 | //Thread::wait(20); |
jsanchez307 | 26:163d7ca8c42d | 341 | //add a random pause between welds |
jsanchez307 | 26:163d7ca8c42d | 342 | if (rand() / float(RAND_MAX) > 0.95) { |
jsanchez307 | 26:163d7ca8c42d | 343 | Rgb = 0; |
jsanchez307 | 26:163d7ca8c42d | 344 | rGb = 0; |
jsanchez307 | 26:163d7ca8c42d | 345 | rgB = 0; |
jsanchez307 | 26:163d7ca8c42d | 346 | //Thread::wait(4000.0 * rand() / float(RAND_MAX)); |
jsanchez307 | 26:163d7ca8c42d | 347 | }*/ |
jaybalar | 28:bccd14334bb9 | 348 | // if (count % 10 == 0) { |
jaybalar | 28:bccd14334bb9 | 349 | // if (Rgb == 1) { |
jaybalar | 28:bccd14334bb9 | 350 | // Rgb = 0; |
jaybalar | 28:bccd14334bb9 | 351 | // rGb = 1; |
jaybalar | 28:bccd14334bb9 | 352 | // rgB = 0; |
jaybalar | 28:bccd14334bb9 | 353 | // } |
jaybalar | 28:bccd14334bb9 | 354 | // |
jaybalar | 28:bccd14334bb9 | 355 | // else if (rGb == 1) { |
jaybalar | 28:bccd14334bb9 | 356 | // Rgb = 0; |
jaybalar | 28:bccd14334bb9 | 357 | // rGb = 0; |
jaybalar | 28:bccd14334bb9 | 358 | // rgB = 1; |
jaybalar | 28:bccd14334bb9 | 359 | // } |
jaybalar | 28:bccd14334bb9 | 360 | // else if (rgB == 1) { |
jaybalar | 28:bccd14334bb9 | 361 | // Rgb = 1; |
jaybalar | 28:bccd14334bb9 | 362 | // rGb = 0; |
jaybalar | 28:bccd14334bb9 | 363 | // rgB = 0; |
jaybalar | 28:bccd14334bb9 | 364 | // } else if (Rgb == 0) { |
jaybalar | 28:bccd14334bb9 | 365 | // Rgb = 0; |
jaybalar | 28:bccd14334bb9 | 366 | // rGb = 1; |
jaybalar | 28:bccd14334bb9 | 367 | // rgB = 0; |
jaybalar | 28:bccd14334bb9 | 368 | // } |
jaybalar | 28:bccd14334bb9 | 369 | // } |
jaybalar | 28:bccd14334bb9 | 370 | // |
jaybalar | 28:bccd14334bb9 | 371 | // count++; |
jstephens78 | 19:6d9bee043ede | 372 | } |
jstephens78 | 19:6d9bee043ede | 373 | } |