Tetris Base Game

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

Committer:
jsanchez307
Date:
Wed Nov 30 21:57:25 2022 +0000
Revision:
0:1858f2b100fd
Tetris Skeleton V 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jsanchez307 0:1858f2b100fd 1 #include Pieces.h
jsanchez307 0:1858f2b100fd 2
jsanchez307 0:1858f2b100fd 3 // Define the Pieces
jsanchez307 0:1858f2b100fd 4 char mPieces [7 /*kind */ ][4 /* rotation */ ][5 /* horizontal blocks */ ][5 /* vertical blocks */ ] =
jsanchez307 0:1858f2b100fd 5 {
jsanchez307 0:1858f2b100fd 6 // Square
jsanchez307 0:1858f2b100fd 7 {
jsanchez307 0:1858f2b100fd 8 {
jsanchez307 0:1858f2b100fd 9 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 10 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 11 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 12 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 13 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 14 },
jsanchez307 0:1858f2b100fd 15 {
jsanchez307 0:1858f2b100fd 16 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 17 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 18 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 19 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 20 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 21 },
jsanchez307 0:1858f2b100fd 22 {
jsanchez307 0:1858f2b100fd 23 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 24 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 25 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 26 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 27 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 28 },
jsanchez307 0:1858f2b100fd 29 {
jsanchez307 0:1858f2b100fd 30 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 31 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 32 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 33 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 34 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 35 }
jsanchez307 0:1858f2b100fd 36 },
jsanchez307 0:1858f2b100fd 37
jsanchez307 0:1858f2b100fd 38 // I
jsanchez307 0:1858f2b100fd 39 {
jsanchez307 0:1858f2b100fd 40 {
jsanchez307 0:1858f2b100fd 41 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 42 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 43 {0, 1, 2, 1, 1},
jsanchez307 0:1858f2b100fd 44 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 45 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 46 },
jsanchez307 0:1858f2b100fd 47 {
jsanchez307 0:1858f2b100fd 48 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 49 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 50 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 51 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 52 {0, 0, 1, 0, 0}
jsanchez307 0:1858f2b100fd 53 },
jsanchez307 0:1858f2b100fd 54 {
jsanchez307 0:1858f2b100fd 55 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 56 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 57 {1, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 58 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 59 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 60 },
jsanchez307 0:1858f2b100fd 61 {
jsanchez307 0:1858f2b100fd 62 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 63 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 64 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 65 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 66 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 67 }
jsanchez307 0:1858f2b100fd 68 }
jsanchez307 0:1858f2b100fd 69 ,
jsanchez307 0:1858f2b100fd 70 // L
jsanchez307 0:1858f2b100fd 71 {
jsanchez307 0:1858f2b100fd 72 {
jsanchez307 0:1858f2b100fd 73 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 74 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 75 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 76 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 77 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 78 },
jsanchez307 0:1858f2b100fd 79 {
jsanchez307 0:1858f2b100fd 80 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 81 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 82 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 83 {0, 1, 0, 0, 0},
jsanchez307 0:1858f2b100fd 84 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 85 },
jsanchez307 0:1858f2b100fd 86 {
jsanchez307 0:1858f2b100fd 87 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 88 {0, 1, 1, 0, 0},
jsanchez307 0:1858f2b100fd 89 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 90 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 91 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 92 },
jsanchez307 0:1858f2b100fd 93 {
jsanchez307 0:1858f2b100fd 94 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 95 {0, 0, 0, 1, 0},
jsanchez307 0:1858f2b100fd 96 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 97 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 98 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 99 }
jsanchez307 0:1858f2b100fd 100 },
jsanchez307 0:1858f2b100fd 101 // L mirrored
jsanchez307 0:1858f2b100fd 102 {
jsanchez307 0:1858f2b100fd 103 {
jsanchez307 0:1858f2b100fd 104 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 105 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 106 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 107 {0, 1, 1, 0, 0},
jsanchez307 0:1858f2b100fd 108 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 109 },
jsanchez307 0:1858f2b100fd 110 {
jsanchez307 0:1858f2b100fd 111 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 112 {0, 1, 0, 0, 0},
jsanchez307 0:1858f2b100fd 113 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 114 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 115 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 116 },
jsanchez307 0:1858f2b100fd 117 {
jsanchez307 0:1858f2b100fd 118 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 119 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 120 {0, 0, 2, 0, 0},
jsanchez307 0:1858f2b100fd 121 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 122 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 123 },
jsanchez307 0:1858f2b100fd 124 {
jsanchez307 0:1858f2b100fd 125 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 126 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 127 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 128 {0, 0, 0, 1, 0},
jsanchez307 0:1858f2b100fd 129 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 130 }
jsanchez307 0:1858f2b100fd 131 },
jsanchez307 0:1858f2b100fd 132 // N
jsanchez307 0:1858f2b100fd 133 {
jsanchez307 0:1858f2b100fd 134 {
jsanchez307 0:1858f2b100fd 135 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 136 {0, 0, 0, 1, 0},
jsanchez307 0:1858f2b100fd 137 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 138 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 139 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 140 },
jsanchez307 0:1858f2b100fd 141 {
jsanchez307 0:1858f2b100fd 142 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 143 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 144 {0, 1, 2, 0, 0},
jsanchez307 0:1858f2b100fd 145 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 146 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 147 },
jsanchez307 0:1858f2b100fd 148 {
jsanchez307 0:1858f2b100fd 149 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 150 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 151 {0, 1, 2, 0, 0},
jsanchez307 0:1858f2b100fd 152 {0, 1, 0, 0, 0},
jsanchez307 0:1858f2b100fd 153 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 154 },
jsanchez307 0:1858f2b100fd 155 {
jsanchez307 0:1858f2b100fd 156 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 157 {0, 1, 1, 0, 0},
jsanchez307 0:1858f2b100fd 158 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 159 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 160 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 161 }
jsanchez307 0:1858f2b100fd 162 },
jsanchez307 0:1858f2b100fd 163 // N mirrored
jsanchez307 0:1858f2b100fd 164 {
jsanchez307 0:1858f2b100fd 165 {
jsanchez307 0:1858f2b100fd 166 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 167 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 168 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 169 {0, 0, 0, 1, 0},
jsanchez307 0:1858f2b100fd 170 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 171 },
jsanchez307 0:1858f2b100fd 172 {
jsanchez307 0:1858f2b100fd 173 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 174 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 175 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 176 {0, 1, 1, 0, 0},
jsanchez307 0:1858f2b100fd 177 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 178 },
jsanchez307 0:1858f2b100fd 179 {
jsanchez307 0:1858f2b100fd 180 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 181 {0, 1, 0, 0, 0},
jsanchez307 0:1858f2b100fd 182 {0, 1, 2, 0, 0},
jsanchez307 0:1858f2b100fd 183 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 184 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 185 },
jsanchez307 0:1858f2b100fd 186 {
jsanchez307 0:1858f2b100fd 187 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 188 {0, 0, 1, 1, 0},
jsanchez307 0:1858f2b100fd 189 {0, 1, 2, 0, 0},
jsanchez307 0:1858f2b100fd 190 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 191 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 192 }
jsanchez307 0:1858f2b100fd 193 },
jsanchez307 0:1858f2b100fd 194 // T
jsanchez307 0:1858f2b100fd 195 {
jsanchez307 0:1858f2b100fd 196 {
jsanchez307 0:1858f2b100fd 197 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 198 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 199 {0, 0, 2, 1, 0},
jsanchez307 0:1858f2b100fd 200 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 201 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 202 },
jsanchez307 0:1858f2b100fd 203 {
jsanchez307 0:1858f2b100fd 204 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 205 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 206 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 207 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 208 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 209 },
jsanchez307 0:1858f2b100fd 210 {
jsanchez307 0:1858f2b100fd 211 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 212 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 213 {0, 1, 2, 0, 0},
jsanchez307 0:1858f2b100fd 214 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 215 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 216 },
jsanchez307 0:1858f2b100fd 217 {
jsanchez307 0:1858f2b100fd 218 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 219 {0, 0, 1, 0, 0},
jsanchez307 0:1858f2b100fd 220 {0, 1, 2, 1, 0},
jsanchez307 0:1858f2b100fd 221 {0, 0, 0, 0, 0},
jsanchez307 0:1858f2b100fd 222 {0, 0, 0, 0, 0}
jsanchez307 0:1858f2b100fd 223 }
jsanchez307 0:1858f2b100fd 224 }
jsanchez307 0:1858f2b100fd 225 };
jsanchez307 0:1858f2b100fd 226
jsanchez307 0:1858f2b100fd 227 // Displacement of the piece to the position where it is first drawn in the board when it is created
jsanchez307 0:1858f2b100fd 228 int mPiecesInitialPosition [7 /*kind */ ][4 /* rotation */ ][2 /* position */] =
jsanchez307 0:1858f2b100fd 229 {
jsanchez307 0:1858f2b100fd 230 /* Square */
jsanchez307 0:1858f2b100fd 231 {
jsanchez307 0:1858f2b100fd 232 {-2, -3},
jsanchez307 0:1858f2b100fd 233 {-2, -3},
jsanchez307 0:1858f2b100fd 234 {-2, -3},
jsanchez307 0:1858f2b100fd 235 {-2, -3}
jsanchez307 0:1858f2b100fd 236 },
jsanchez307 0:1858f2b100fd 237 /* I */
jsanchez307 0:1858f2b100fd 238 {
jsanchez307 0:1858f2b100fd 239 {-2, -2},
jsanchez307 0:1858f2b100fd 240 {-2, -3},
jsanchez307 0:1858f2b100fd 241 {-2, -2},
jsanchez307 0:1858f2b100fd 242 {-2, -3}
jsanchez307 0:1858f2b100fd 243 },
jsanchez307 0:1858f2b100fd 244 /* L */
jsanchez307 0:1858f2b100fd 245 {
jsanchez307 0:1858f2b100fd 246 {-2, -3},
jsanchez307 0:1858f2b100fd 247 {-2, -3},
jsanchez307 0:1858f2b100fd 248 {-2, -3},
jsanchez307 0:1858f2b100fd 249 {-2, -2}
jsanchez307 0:1858f2b100fd 250 },
jsanchez307 0:1858f2b100fd 251 /* L mirrored */
jsanchez307 0:1858f2b100fd 252 {
jsanchez307 0:1858f2b100fd 253 {-2, -3},
jsanchez307 0:1858f2b100fd 254 {-2, -2},
jsanchez307 0:1858f2b100fd 255 {-2, -3},
jsanchez307 0:1858f2b100fd 256 {-2, -3}
jsanchez307 0:1858f2b100fd 257 },
jsanchez307 0:1858f2b100fd 258 /* N */
jsanchez307 0:1858f2b100fd 259 {
jsanchez307 0:1858f2b100fd 260 {-2, -3},
jsanchez307 0:1858f2b100fd 261 {-2, -3},
jsanchez307 0:1858f2b100fd 262 {-2, -3},
jsanchez307 0:1858f2b100fd 263 {-2, -2}
jsanchez307 0:1858f2b100fd 264 },
jsanchez307 0:1858f2b100fd 265 /* N mirrored */
jsanchez307 0:1858f2b100fd 266 {
jsanchez307 0:1858f2b100fd 267 {-2, -3},
jsanchez307 0:1858f2b100fd 268 {-2, -3},
jsanchez307 0:1858f2b100fd 269 {-2, -3},
jsanchez307 0:1858f2b100fd 270 {-2, -2}
jsanchez307 0:1858f2b100fd 271 },
jsanchez307 0:1858f2b100fd 272 /* T */
jsanchez307 0:1858f2b100fd 273 {
jsanchez307 0:1858f2b100fd 274 {-2, -3},
jsanchez307 0:1858f2b100fd 275 {-2, -3},
jsanchez307 0:1858f2b100fd 276 {-2, -3},
jsanchez307 0:1858f2b100fd 277 {-2, -2}
jsanchez307 0:1858f2b100fd 278 },
jsanchez307 0:1858f2b100fd 279 };
jsanchez307 0:1858f2b100fd 280
jsanchez307 0:1858f2b100fd 281 /*
jsanchez307 0:1858f2b100fd 282 ======================================
jsanchez307 0:1858f2b100fd 283 Return the type of a block (0 = no-block, 1 = normal block, 2 = pivot block)
jsanchez307 0:1858f2b100fd 284
jsanchez307 0:1858f2b100fd 285 Parameters:
jsanchez307 0:1858f2b100fd 286
jsanchez307 0:1858f2b100fd 287 int pPiece: Piece to draw
jsanchez307 0:1858f2b100fd 288 int pRotation: 1 of the 4 possible rotations
jsanchez307 0:1858f2b100fd 289 int pX: Horizontal position in blocks
jsanchez307 0:1858f2b100fd 290 int pY: Vertical position in blocks
jsanchez307 0:1858f2b100fd 291 ======================================
jsanchez307 0:1858f2b100fd 292 */
jsanchez307 0:1858f2b100fd 293 int Pieces::GetBlockType (int pPiece, int pRotation, int pX, int pY)
jsanchez307 0:1858f2b100fd 294 {
jsanchez307 0:1858f2b100fd 295 return mPieces [pPiece][pRotation][pX][pY];
jsanchez307 0:1858f2b100fd 296 }
jsanchez307 0:1858f2b100fd 297
jsanchez307 0:1858f2b100fd 298 /*
jsanchez307 0:1858f2b100fd 299 ======================================
jsanchez307 0:1858f2b100fd 300 Returns the horizontal displacement of the piece that has to be applied in order to create it in the
jsanchez307 0:1858f2b100fd 301 correct position.
jsanchez307 0:1858f2b100fd 302
jsanchez307 0:1858f2b100fd 303 Parameters:
jsanchez307 0:1858f2b100fd 304
jsanchez307 0:1858f2b100fd 305 int pPiece: Piece to draw
jsanchez307 0:1858f2b100fd 306 int pRotation: 1 of the 4 possible rotations
jsanchez307 0:1858f2b100fd 307 ======================================
jsanchez307 0:1858f2b100fd 308 */
jsanchez307 0:1858f2b100fd 309 int Pieces::GetXInitialPosition (int pPiece, int pRotation)
jsanchez307 0:1858f2b100fd 310 {
jsanchez307 0:1858f2b100fd 311 return mPiecesInitialPosition [pPiece][pRotation][0];
jsanchez307 0:1858f2b100fd 312 }
jsanchez307 0:1858f2b100fd 313
jsanchez307 0:1858f2b100fd 314 /*
jsanchez307 0:1858f2b100fd 315 ======================================
jsanchez307 0:1858f2b100fd 316 Returns the vertical displacement of the piece that has to be applied in order to create it in the
jsanchez307 0:1858f2b100fd 317 correct position.
jsanchez307 0:1858f2b100fd 318
jsanchez307 0:1858f2b100fd 319 Parameters:
jsanchez307 0:1858f2b100fd 320
jsanchez307 0:1858f2b100fd 321 int pPiece: Piece to draw
jsanchez307 0:1858f2b100fd 322 int pRotation: 1 of the 4 possible rotations
jsanchez307 0:1858f2b100fd 323 ======================================
jsanchez307 0:1858f2b100fd 324 */
jsanchez307 0:1858f2b100fd 325 int Pieces::GetYInitialPosition (int pPiece, int pRotation)
jsanchez307 0:1858f2b100fd 326 {
jsanchez307 0:1858f2b100fd 327 return mPiecesInitialPosition [pPiece][pRotation][1];
jsanchez307 0:1858f2b100fd 328 }