Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE Physac-MBED PinDetect SDFileSystem mbed-rtos mbed
tetris/main.cpp@22:601e6f9077e4, 2022-12-06 (annotated)
- Committer:
- jsanchez307
- Date:
- Tue Dec 06 22:48:35 2022 +0000
- Revision:
- 22:601e6f9077e4
Added working Tetris Game
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jsanchez307 | 22:601e6f9077e4 | 1 | #include "mbed.h" |
| jsanchez307 | 22:601e6f9077e4 | 2 | #include "uLCD_4DGL.h" |
| jsanchez307 | 22:601e6f9077e4 | 3 | #include "Game.h" |
| jsanchez307 | 22:601e6f9077e4 | 4 | #include "Nav_Switch.h" |
| jsanchez307 | 22:601e6f9077e4 | 5 | |
| jsanchez307 | 22:601e6f9077e4 | 6 | uLCD_4DGL uLCD(p13, p14, p30); |
| jsanchez307 | 22:601e6f9077e4 | 7 | Nav_Switch myNav(p19, p16, p17, p15, p18); // pins(up, down, left, right, fire) |
| jsanchez307 | 22:601e6f9077e4 | 8 | |
| jsanchez307 | 22:601e6f9077e4 | 9 | int SinglePiecePoints = 50; |
| jsanchez307 | 22:601e6f9077e4 | 10 | int LineClearPoints = 200; |
| jsanchez307 | 22:601e6f9077e4 | 11 | int key_input = 0; |
| jsanchez307 | 22:601e6f9077e4 | 12 | bool gameStarted = false; |
| jsanchez307 | 22:601e6f9077e4 | 13 | void input_left() // FIX |
| jsanchez307 | 22:601e6f9077e4 | 14 | { |
| jsanchez307 | 22:601e6f9077e4 | 15 | if(!gameStarted) |
| jsanchez307 | 22:601e6f9077e4 | 16 | { gameStarted=true; |
| jsanchez307 | 22:601e6f9077e4 | 17 | return; |
| jsanchez307 | 22:601e6f9077e4 | 18 | } |
| jsanchez307 | 22:601e6f9077e4 | 19 | key_input = 1; |
| jsanchez307 | 22:601e6f9077e4 | 20 | } |
| jsanchez307 | 22:601e6f9077e4 | 21 | |
| jsanchez307 | 22:601e6f9077e4 | 22 | void input_right() |
| jsanchez307 | 22:601e6f9077e4 | 23 | { |
| jsanchez307 | 22:601e6f9077e4 | 24 | if(!gameStarted) |
| jsanchez307 | 22:601e6f9077e4 | 25 | { gameStarted=true; |
| jsanchez307 | 22:601e6f9077e4 | 26 | return; |
| jsanchez307 | 22:601e6f9077e4 | 27 | } |
| jsanchez307 | 22:601e6f9077e4 | 28 | key_input = 2; |
| jsanchez307 | 22:601e6f9077e4 | 29 | } |
| jsanchez307 | 22:601e6f9077e4 | 30 | |
| jsanchez307 | 22:601e6f9077e4 | 31 | void input_rotate() |
| jsanchez307 | 22:601e6f9077e4 | 32 | { |
| jsanchez307 | 22:601e6f9077e4 | 33 | if(!gameStarted) |
| jsanchez307 | 22:601e6f9077e4 | 34 | { gameStarted=true; |
| jsanchez307 | 22:601e6f9077e4 | 35 | return; |
| jsanchez307 | 22:601e6f9077e4 | 36 | } |
| jsanchez307 | 22:601e6f9077e4 | 37 | key_input = 3; |
| jsanchez307 | 22:601e6f9077e4 | 38 | } |
| jsanchez307 | 22:601e6f9077e4 | 39 | |
| jsanchez307 | 22:601e6f9077e4 | 40 | void input_down() |
| jsanchez307 | 22:601e6f9077e4 | 41 | { |
| jsanchez307 | 22:601e6f9077e4 | 42 | if(!gameStarted) |
| jsanchez307 | 22:601e6f9077e4 | 43 | { gameStarted=true; |
| jsanchez307 | 22:601e6f9077e4 | 44 | return; |
| jsanchez307 | 22:601e6f9077e4 | 45 | } |
| jsanchez307 | 22:601e6f9077e4 | 46 | key_input=4; |
| jsanchez307 | 22:601e6f9077e4 | 47 | } |
| jsanchez307 | 22:601e6f9077e4 | 48 | |
| jsanchez307 | 22:601e6f9077e4 | 49 | void clear_board() |
| jsanchez307 | 22:601e6f9077e4 | 50 | { |
| jsanchez307 | 22:601e6f9077e4 | 51 | uLCD.filled_rectangle(20,0,79,128,0); |
| jsanchez307 | 22:601e6f9077e4 | 52 | } |
| jsanchez307 | 22:601e6f9077e4 | 53 | |
| jsanchez307 | 22:601e6f9077e4 | 54 | void clear_next_piece() |
| jsanchez307 | 22:601e6f9077e4 | 55 | { |
| jsanchez307 | 22:601e6f9077e4 | 56 | uLCD.filled_rectangle(92,20,122,50,0); |
| jsanchez307 | 22:601e6f9077e4 | 57 | } |
| jsanchez307 | 22:601e6f9077e4 | 58 | |
| jsanchez307 | 22:601e6f9077e4 | 59 | void UpdateGameStatus(int points) // used to include int lines |
| jsanchez307 | 22:601e6f9077e4 | 60 | { |
| jsanchez307 | 22:601e6f9077e4 | 61 | uLCD.locate(13,12); |
| jsanchez307 | 22:601e6f9077e4 | 62 | uLCD.printf("Score"); |
| jsanchez307 | 22:601e6f9077e4 | 63 | uLCD.locate(13,13); |
| jsanchez307 | 22:601e6f9077e4 | 64 | uLCD.printf("%d",points); |
| jsanchez307 | 22:601e6f9077e4 | 65 | } |
| jsanchez307 | 22:601e6f9077e4 | 66 | |
| jsanchez307 | 22:601e6f9077e4 | 67 | |
| jsanchez307 | 22:601e6f9077e4 | 68 | /*int RandomGen(char range) |
| jsanchez307 | 22:601e6f9077e4 | 69 | { |
| jsanchez307 | 22:601e6f9077e4 | 70 | pc.printf("%c",range); |
| jsanchez307 | 22:601e6f9077e4 | 71 | while(!pc.readable()) wait(0.5); |
| jsanchez307 | 22:601e6f9077e4 | 72 | char buffer[4]; |
| jsanchez307 | 22:601e6f9077e4 | 73 | pc.gets(buffer,4); |
| jsanchez307 | 22:601e6f9077e4 | 74 | int i = buffer[0]-'0'; |
| jsanchez307 | 22:601e6f9077e4 | 75 | return i; |
| jsanchez307 | 22:601e6f9077e4 | 76 | }*/ |
| jsanchez307 | 22:601e6f9077e4 | 77 | |
| jsanchez307 | 22:601e6f9077e4 | 78 | int main() |
| jsanchez307 | 22:601e6f9077e4 | 79 | { |
| jsanchez307 | 22:601e6f9077e4 | 80 | /*while(1){ |
| jsanchez307 | 22:601e6f9077e4 | 81 | uLCD.printf("test"); |
| jsanchez307 | 22:601e6f9077e4 | 82 | }*/ |
| jsanchez307 | 22:601e6f9077e4 | 83 | |
| jsanchez307 | 22:601e6f9077e4 | 84 | |
| jsanchez307 | 22:601e6f9077e4 | 85 | |
| jsanchez307 | 22:601e6f9077e4 | 86 | |
| jsanchez307 | 22:601e6f9077e4 | 87 | /*if (myNav.up()) input_rotate(); |
| jsanchez307 | 22:601e6f9077e4 | 88 | if (myNav.down()) input_down();; |
| jsanchez307 | 22:601e6f9077e4 | 89 | if (myNav.left()) input_left(); |
| jsanchez307 | 22:601e6f9077e4 | 90 | if (myNav.right()) input_right();; |
| jsanchez307 | 22:601e6f9077e4 | 91 | //check mouse left button click*/ // FIXQ |
| jsanchez307 | 22:601e6f9077e4 | 92 | //if (myNav.fire()) input_down; // FIX, CAN ADD MENU FUNCTIONALITY |
| jsanchez307 | 22:601e6f9077e4 | 93 | |
| jsanchez307 | 22:601e6f9077e4 | 94 | |
| jsanchez307 | 22:601e6f9077e4 | 95 | |
| jsanchez307 | 22:601e6f9077e4 | 96 | uLCD.text_width(2); |
| jsanchez307 | 22:601e6f9077e4 | 97 | uLCD.text_height(2); |
| jsanchez307 | 22:601e6f9077e4 | 98 | uLCD.color(WHITE); |
| jsanchez307 | 22:601e6f9077e4 | 99 | uLCD.printf("TETRIS"); |
| jsanchez307 | 22:601e6f9077e4 | 100 | wait(2); |
| jsanchez307 | 22:601e6f9077e4 | 101 | |
| jsanchez307 | 22:601e6f9077e4 | 102 | uLCD.baudrate(3000000); |
| jsanchez307 | 22:601e6f9077e4 | 103 | |
| jsanchez307 | 22:601e6f9077e4 | 104 | |
| jsanchez307 | 22:601e6f9077e4 | 105 | /*pc.baud(9600); |
| jsanchez307 | 22:601e6f9077e4 | 106 | pc.format(8,SerialBase::None,1); |
| jsanchez307 | 22:601e6f9077e4 | 107 | pc.printf("0"); |
| jsanchez307 | 22:601e6f9077e4 | 108 | while(!pc.readable()) wait(0.5); |
| jsanchez307 | 22:601e6f9077e4 | 109 | char buffer[4]; |
| jsanchez307 | 22:601e6f9077e4 | 110 | pc.gets(buffer,4);*/ |
| jsanchez307 | 22:601e6f9077e4 | 111 | |
| jsanchez307 | 22:601e6f9077e4 | 112 | |
| jsanchez307 | 22:601e6f9077e4 | 113 | |
| jsanchez307 | 22:601e6f9077e4 | 114 | |
| jsanchez307 | 22:601e6f9077e4 | 115 | |
| jsanchez307 | 22:601e6f9077e4 | 116 | |
| jsanchez307 | 22:601e6f9077e4 | 117 | bool isGameOver = false; |
| jsanchez307 | 22:601e6f9077e4 | 118 | int mScreenHeight = 128; |
| jsanchez307 | 22:601e6f9077e4 | 119 | Pieces mPieces; |
| jsanchez307 | 22:601e6f9077e4 | 120 | Board mBoard (&mPieces, mScreenHeight); |
| jsanchez307 | 22:601e6f9077e4 | 121 | int a = 1; // RandomGen('a') |
| jsanchez307 | 22:601e6f9077e4 | 122 | int b = 2; |
| jsanchez307 | 22:601e6f9077e4 | 123 | int c = 3; |
| jsanchez307 | 22:601e6f9077e4 | 124 | int d = 4; |
| jsanchez307 | 22:601e6f9077e4 | 125 | Game mGame (&mBoard, &mPieces, mScreenHeight, &uLCD,a,b,c,d); |
| jsanchez307 | 22:601e6f9077e4 | 126 | |
| jsanchez307 | 22:601e6f9077e4 | 127 | |
| jsanchez307 | 22:601e6f9077e4 | 128 | // ----- Main Loop ----- |
| jsanchez307 | 22:601e6f9077e4 | 129 | int prevX=0; |
| jsanchez307 | 22:601e6f9077e4 | 130 | int prevY=0; |
| jsanchez307 | 22:601e6f9077e4 | 131 | int prevPiece=-1; |
| jsanchez307 | 22:601e6f9077e4 | 132 | int prevRot=0; |
| jsanchez307 | 22:601e6f9077e4 | 133 | Timer timer; |
| jsanchez307 | 22:601e6f9077e4 | 134 | timer.start(); |
| jsanchez307 | 22:601e6f9077e4 | 135 | key_input=0; |
| jsanchez307 | 22:601e6f9077e4 | 136 | bool needErase = false; |
| jsanchez307 | 22:601e6f9077e4 | 137 | uLCD.cls(); |
| jsanchez307 | 22:601e6f9077e4 | 138 | |
| jsanchez307 | 22:601e6f9077e4 | 139 | |
| jsanchez307 | 22:601e6f9077e4 | 140 | |
| jsanchez307 | 22:601e6f9077e4 | 141 | int piece = 0; |
| jsanchez307 | 22:601e6f9077e4 | 142 | int rotate = 0; |
| jsanchez307 | 22:601e6f9077e4 | 143 | |
| jsanchez307 | 22:601e6f9077e4 | 144 | UpdateGameStatus(mGame.GetPoints()); |
| jsanchez307 | 22:601e6f9077e4 | 145 | |
| jsanchez307 | 22:601e6f9077e4 | 146 | while (1) |
| jsanchez307 | 22:601e6f9077e4 | 147 | { |
| jsanchez307 | 22:601e6f9077e4 | 148 | if (myNav.up()) input_rotate(); |
| jsanchez307 | 22:601e6f9077e4 | 149 | if (myNav.down()) input_down();; |
| jsanchez307 | 22:601e6f9077e4 | 150 | if (myNav.left()) input_left(); |
| jsanchez307 | 22:601e6f9077e4 | 151 | if (myNav.right()) input_right();; |
| jsanchez307 | 22:601e6f9077e4 | 152 | //check mouse left button click // FIXQ |
| jsanchez307 | 22:601e6f9077e4 | 153 | //if (myNav.fire()) input_down; // FIX, CAN ADD MENU FUNCTIONALITY |
| jsanchez307 | 22:601e6f9077e4 | 154 | |
| jsanchez307 | 22:601e6f9077e4 | 155 | if(isGameOver) |
| jsanchez307 | 22:601e6f9077e4 | 156 | { |
| jsanchez307 | 22:601e6f9077e4 | 157 | wait(1); |
| jsanchez307 | 22:601e6f9077e4 | 158 | uLCD.cls(); |
| jsanchez307 | 22:601e6f9077e4 | 159 | uLCD.text_width(2); |
| jsanchez307 | 22:601e6f9077e4 | 160 | uLCD.text_height(2); |
| jsanchez307 | 22:601e6f9077e4 | 161 | uLCD.printf("GAME OVER"); |
| jsanchez307 | 22:601e6f9077e4 | 162 | while(1); |
| jsanchez307 | 22:601e6f9077e4 | 163 | } |
| jsanchez307 | 22:601e6f9077e4 | 164 | // ----- Draw ---- |
| jsanchez307 | 22:601e6f9077e4 | 165 | if(needErase) |
| jsanchez307 | 22:601e6f9077e4 | 166 | { |
| jsanchez307 | 22:601e6f9077e4 | 167 | mGame.ErasePiece(prevX,prevY,prevPiece,prevRot); |
| jsanchez307 | 22:601e6f9077e4 | 168 | needErase=false; |
| jsanchez307 | 22:601e6f9077e4 | 169 | } |
| jsanchez307 | 22:601e6f9077e4 | 170 | mGame.DrawScene(); |
| jsanchez307 | 22:601e6f9077e4 | 171 | |
| jsanchez307 | 22:601e6f9077e4 | 172 | prevX=mGame.mPosX; |
| jsanchez307 | 22:601e6f9077e4 | 173 | prevY=mGame.mPosY; |
| jsanchez307 | 22:601e6f9077e4 | 174 | prevPiece=mGame.mPiece; |
| jsanchez307 | 22:601e6f9077e4 | 175 | prevRot=mGame.mRotation; |
| jsanchez307 | 22:601e6f9077e4 | 176 | |
| jsanchez307 | 22:601e6f9077e4 | 177 | // ----- Input ----- |
| jsanchez307 | 22:601e6f9077e4 | 178 | switch (key_input) |
| jsanchez307 | 22:601e6f9077e4 | 179 | { |
| jsanchez307 | 22:601e6f9077e4 | 180 | case (2): //right |
| jsanchez307 | 22:601e6f9077e4 | 181 | { |
| jsanchez307 | 22:601e6f9077e4 | 182 | if (mBoard.IsPossibleMovement (mGame.mPosX + 1, mGame.mPosY, mGame.mPiece, mGame.mRotation)) |
| jsanchez307 | 22:601e6f9077e4 | 183 | {mGame.mPosX++;needErase=true;} |
| jsanchez307 | 22:601e6f9077e4 | 184 | break; |
| jsanchez307 | 22:601e6f9077e4 | 185 | } |
| jsanchez307 | 22:601e6f9077e4 | 186 | |
| jsanchez307 | 22:601e6f9077e4 | 187 | case (1): //left |
| jsanchez307 | 22:601e6f9077e4 | 188 | { |
| jsanchez307 | 22:601e6f9077e4 | 189 | if (mBoard.IsPossibleMovement (mGame.mPosX - 1, mGame.mPosY, mGame.mPiece, mGame.mRotation)) |
| jsanchez307 | 22:601e6f9077e4 | 190 | {mGame.mPosX--;needErase=true;} |
| jsanchez307 | 22:601e6f9077e4 | 191 | break; |
| jsanchez307 | 22:601e6f9077e4 | 192 | } |
| jsanchez307 | 22:601e6f9077e4 | 193 | |
| jsanchez307 | 22:601e6f9077e4 | 194 | case (4)://down |
| jsanchez307 | 22:601e6f9077e4 | 195 | { |
| jsanchez307 | 22:601e6f9077e4 | 196 | // Check collision from up to down |
| jsanchez307 | 22:601e6f9077e4 | 197 | while (mBoard.IsPossibleMovement(mGame.mPosX, mGame.mPosY, mGame.mPiece, mGame.mRotation)) { mGame.mPosY++; } |
| jsanchez307 | 22:601e6f9077e4 | 198 | needErase=true; |
| jsanchez307 | 22:601e6f9077e4 | 199 | mBoard.StorePiece (mGame.mPosX, mGame.mPosY - 1, mGame.mPiece, mGame.mRotation); |
| jsanchez307 | 22:601e6f9077e4 | 200 | mGame.AddPoints(SinglePiecePoints); |
| jsanchez307 | 22:601e6f9077e4 | 201 | int linesDeleted = mBoard.DeletePossibleLines (); |
| jsanchez307 | 22:601e6f9077e4 | 202 | if(linesDeleted>0) |
| jsanchez307 | 22:601e6f9077e4 | 203 | { |
| jsanchez307 | 22:601e6f9077e4 | 204 | mGame.AddClearedLines(linesDeleted); |
| jsanchez307 | 22:601e6f9077e4 | 205 | mGame.AddPoints(LineClearPoints*linesDeleted); |
| jsanchez307 | 22:601e6f9077e4 | 206 | //Thread t1(FlashLight); |
| jsanchez307 | 22:601e6f9077e4 | 207 | //PlayClearSound(); |
| jsanchez307 | 22:601e6f9077e4 | 208 | clear_board(); |
| jsanchez307 | 22:601e6f9077e4 | 209 | } |
| jsanchez307 | 22:601e6f9077e4 | 210 | UpdateGameStatus(mGame.GetPoints()); // FIX |
| jsanchez307 | 22:601e6f9077e4 | 211 | |
| jsanchez307 | 22:601e6f9077e4 | 212 | if (mBoard.IsGameOver()) |
| jsanchez307 | 22:601e6f9077e4 | 213 | { |
| jsanchez307 | 22:601e6f9077e4 | 214 | isGameOver=true; |
| jsanchez307 | 22:601e6f9077e4 | 215 | uLCD.cls(); |
| jsanchez307 | 22:601e6f9077e4 | 216 | |
| jsanchez307 | 22:601e6f9077e4 | 217 | } |
| jsanchez307 | 22:601e6f9077e4 | 218 | |
| jsanchez307 | 22:601e6f9077e4 | 219 | if(!isGameOver) |
| jsanchez307 | 22:601e6f9077e4 | 220 | { |
| jsanchez307 | 22:601e6f9077e4 | 221 | mGame.CreateNewPiece(piece,rotate); |
| jsanchez307 | 22:601e6f9077e4 | 222 | clear_next_piece(); |
| jsanchez307 | 22:601e6f9077e4 | 223 | |
| jsanchez307 | 22:601e6f9077e4 | 224 | piece++; |
| jsanchez307 | 22:601e6f9077e4 | 225 | rotate++; |
| jsanchez307 | 22:601e6f9077e4 | 226 | |
| jsanchez307 | 22:601e6f9077e4 | 227 | if (piece==7) piece = 0; |
| jsanchez307 | 22:601e6f9077e4 | 228 | if (rotate==4) rotate = 0; |
| jsanchez307 | 22:601e6f9077e4 | 229 | } |
| jsanchez307 | 22:601e6f9077e4 | 230 | break; |
| jsanchez307 | 22:601e6f9077e4 | 231 | } |
| jsanchez307 | 22:601e6f9077e4 | 232 | |
| jsanchez307 | 22:601e6f9077e4 | 233 | case (3)://rotate |
| jsanchez307 | 22:601e6f9077e4 | 234 | { |
| jsanchez307 | 22:601e6f9077e4 | 235 | if (mBoard.IsPossibleMovement (mGame.mPosX, mGame.mPosY, mGame.mPiece, (mGame.mRotation + 1) % 4)) |
| jsanchez307 | 22:601e6f9077e4 | 236 | {mGame.mRotation = (mGame.mRotation + 1) % 4;needErase=true;} |
| jsanchez307 | 22:601e6f9077e4 | 237 | break; |
| jsanchez307 | 22:601e6f9077e4 | 238 | } |
| jsanchez307 | 22:601e6f9077e4 | 239 | |
| jsanchez307 | 22:601e6f9077e4 | 240 | case (0):{break;} |
| jsanchez307 | 22:601e6f9077e4 | 241 | } |
| jsanchez307 | 22:601e6f9077e4 | 242 | key_input = 0; |
| jsanchez307 | 22:601e6f9077e4 | 243 | |
| jsanchez307 | 22:601e6f9077e4 | 244 | // ----- Vertical movement ----- |
| jsanchez307 | 22:601e6f9077e4 | 245 | |
| jsanchez307 | 22:601e6f9077e4 | 246 | if(timer.read_ms()>WAIT_TIME) |
| jsanchez307 | 22:601e6f9077e4 | 247 | { |
| jsanchez307 | 22:601e6f9077e4 | 248 | needErase=true; |
| jsanchez307 | 22:601e6f9077e4 | 249 | if(!isGameOver) |
| jsanchez307 | 22:601e6f9077e4 | 250 | { |
| jsanchez307 | 22:601e6f9077e4 | 251 | if (mBoard.IsPossibleMovement (mGame.mPosX, mGame.mPosY + 1, mGame.mPiece, mGame.mRotation)) |
| jsanchez307 | 22:601e6f9077e4 | 252 | { |
| jsanchez307 | 22:601e6f9077e4 | 253 | mGame.mPosY++; |
| jsanchez307 | 22:601e6f9077e4 | 254 | } |
| jsanchez307 | 22:601e6f9077e4 | 255 | else |
| jsanchez307 | 22:601e6f9077e4 | 256 | { |
| jsanchez307 | 22:601e6f9077e4 | 257 | mBoard.StorePiece (mGame.mPosX, mGame.mPosY, mGame.mPiece, mGame.mRotation); |
| jsanchez307 | 22:601e6f9077e4 | 258 | mGame.AddPoints(SinglePiecePoints); |
| jsanchez307 | 22:601e6f9077e4 | 259 | int linesDeleted = mBoard.DeletePossibleLines (); |
| jsanchez307 | 22:601e6f9077e4 | 260 | if(linesDeleted>0) |
| jsanchez307 | 22:601e6f9077e4 | 261 | { |
| jsanchez307 | 22:601e6f9077e4 | 262 | mGame.AddClearedLines(linesDeleted); |
| jsanchez307 | 22:601e6f9077e4 | 263 | mGame.AddPoints(LineClearPoints*linesDeleted); |
| jsanchez307 | 22:601e6f9077e4 | 264 | //Thread t1(FlashLight); |
| jsanchez307 | 22:601e6f9077e4 | 265 | //PlayClearSound(); |
| jsanchez307 | 22:601e6f9077e4 | 266 | clear_board(); |
| jsanchez307 | 22:601e6f9077e4 | 267 | } |
| jsanchez307 | 22:601e6f9077e4 | 268 | UpdateGameStatus(mGame.GetPoints()); |
| jsanchez307 | 22:601e6f9077e4 | 269 | |
| jsanchez307 | 22:601e6f9077e4 | 270 | if (mBoard.IsGameOver()) |
| jsanchez307 | 22:601e6f9077e4 | 271 | { |
| jsanchez307 | 22:601e6f9077e4 | 272 | isGameOver=true; |
| jsanchez307 | 22:601e6f9077e4 | 273 | uLCD.cls(); |
| jsanchez307 | 22:601e6f9077e4 | 274 | } |
| jsanchez307 | 22:601e6f9077e4 | 275 | |
| jsanchez307 | 22:601e6f9077e4 | 276 | if(!isGameOver) |
| jsanchez307 | 22:601e6f9077e4 | 277 | { |
| jsanchez307 | 22:601e6f9077e4 | 278 | mGame.CreateNewPiece(piece,rotate); |
| jsanchez307 | 22:601e6f9077e4 | 279 | clear_next_piece(); // 0-6 Pieces, 0-3 rotations^^ |
| jsanchez307 | 22:601e6f9077e4 | 280 | piece++; |
| jsanchez307 | 22:601e6f9077e4 | 281 | rotate++; |
| jsanchez307 | 22:601e6f9077e4 | 282 | |
| jsanchez307 | 22:601e6f9077e4 | 283 | if (piece==7) piece = 0; |
| jsanchez307 | 22:601e6f9077e4 | 284 | if (rotate==4) rotate = 0; |
| jsanchez307 | 22:601e6f9077e4 | 285 | } |
| jsanchez307 | 22:601e6f9077e4 | 286 | } |
| jsanchez307 | 22:601e6f9077e4 | 287 | } |
| jsanchez307 | 22:601e6f9077e4 | 288 | timer.reset(); |
| jsanchez307 | 22:601e6f9077e4 | 289 | } |
| jsanchez307 | 22:601e6f9077e4 | 290 | wait(0.1); |
| jsanchez307 | 22:601e6f9077e4 | 291 | } |
| jsanchez307 | 22:601e6f9077e4 | 292 | } |