Tetris game on mikroTFT touchscreen and LPC1768
Field.cpp@4:107d1d5a642e, 2017-03-18 (annotated)
- Committer:
- sergun2311
- Date:
- Sat Mar 18 14:45:16 2017 +0000
- Revision:
- 4:107d1d5a642e
- Parent:
- 3:36de55e63fdf
Tetris V1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sergun2311 | 0:645509d95b8d | 1 | #include "Field.h" |
sergun2311 | 1:b4aa36ae11ac | 2 | #include "playGround.h" |
sergun2311 | 3:36de55e63fdf | 3 | #include "Piece.h" |
sergun2311 | 4:107d1d5a642e | 4 | #include "Define.h" |
sergun2311 | 0:645509d95b8d | 5 | |
sergun2311 | 4:107d1d5a642e | 6 | // Declearing and defining of the playground/field |
sergun2311 | 1:b4aa36ae11ac | 7 | extern int Field[MAXY][MAXX] = {0}; |
sergun2311 | 1:b4aa36ae11ac | 8 | |
sergun2311 | 4:107d1d5a642e | 9 | // Checking field for filled lines. If it is field |
sergun2311 | 4:107d1d5a642e | 10 | // it removes it with lines uppon it |
sergun2311 | 4:107d1d5a642e | 11 | // Returns Score equal to amount of removed lines, multipiled with 100 |
sergun2311 | 4:107d1d5a642e | 12 | |
sergun2311 | 4:107d1d5a642e | 13 | int checkLine() |
sergun2311 | 4:107d1d5a642e | 14 | { |
sergun2311 | 1:b4aa36ae11ac | 15 | int x, y, score = 0; |
sergun2311 | 1:b4aa36ae11ac | 16 | bool status; |
sergun2311 | 3:36de55e63fdf | 17 | for ( y = 0 ; y < MAXY ; y++ ) { |
sergun2311 | 1:b4aa36ae11ac | 18 | status = true; |
sergun2311 | 3:36de55e63fdf | 19 | for ( x = 0 ; x < MAXX ; x++ ) { |
sergun2311 | 1:b4aa36ae11ac | 20 | if ( Field[y][x] == BLACK ) |
sergun2311 | 1:b4aa36ae11ac | 21 | status = false; |
sergun2311 | 1:b4aa36ae11ac | 22 | } |
sergun2311 | 1:b4aa36ae11ac | 23 | if ( status ) { |
sergun2311 | 1:b4aa36ae11ac | 24 | score += 100; |
sergun2311 | 1:b4aa36ae11ac | 25 | int xx, yy; |
sergun2311 | 1:b4aa36ae11ac | 26 | for ( yy = y ; yy > 0 ; yy-- ) { |
sergun2311 | 3:36de55e63fdf | 27 | for (xx = 0 ; xx < MAXX ; xx++ ) { |
sergun2311 | 1:b4aa36ae11ac | 28 | Field[yy][xx] = Field[yy-1][xx]; |
sergun2311 | 1:b4aa36ae11ac | 29 | } |
sergun2311 | 4:107d1d5a642e | 30 | |
sergun2311 | 1:b4aa36ae11ac | 31 | } |
sergun2311 | 1:b4aa36ae11ac | 32 | } |
sergun2311 | 1:b4aa36ae11ac | 33 | } |
sergun2311 | 1:b4aa36ae11ac | 34 | if (score) |
sergun2311 | 1:b4aa36ae11ac | 35 | drawMapV2(); |
sergun2311 | 1:b4aa36ae11ac | 36 | return score; |
sergun2311 | 1:b4aa36ae11ac | 37 | } |
sergun2311 | 1:b4aa36ae11ac | 38 | |
sergun2311 | 4:107d1d5a642e | 39 | // Checks blocks on MAXX (top) layer. |
sergun2311 | 4:107d1d5a642e | 40 | // If there is any it retunrs TRUE ,else false |
sergun2311 | 4:107d1d5a642e | 41 | |
sergun2311 | 1:b4aa36ae11ac | 42 | bool checkGameOver() |
sergun2311 | 1:b4aa36ae11ac | 43 | { |
sergun2311 | 1:b4aa36ae11ac | 44 | int x; |
sergun2311 | 3:36de55e63fdf | 45 | for ( x = 0 ; x < MAXX ; x++ ) |
sergun2311 | 1:b4aa36ae11ac | 46 | if ( Field[0][x] != BLACK ) |
sergun2311 | 1:b4aa36ae11ac | 47 | return true; |
sergun2311 | 4:107d1d5a642e | 48 | return false; |
sergun2311 | 3:36de55e63fdf | 49 | } |
sergun2311 | 3:36de55e63fdf | 50 | |
sergun2311 | 4:107d1d5a642e | 51 | // Saves an object NewBlock to the field. |
sergun2311 | 4:107d1d5a642e | 52 | // Fills matrix with colors of the blocks |
sergun2311 | 4:107d1d5a642e | 53 | |
sergun2311 | 3:36de55e63fdf | 54 | void saveToField(Block NewBlock) |
sergun2311 | 3:36de55e63fdf | 55 | { |
sergun2311 | 3:36de55e63fdf | 56 | int xx , yy; |
sergun2311 | 3:36de55e63fdf | 57 | for ( xx = 0 ; xx < 5 ; xx++ ) { |
sergun2311 | 3:36de55e63fdf | 58 | for (yy = 0 ; yy < 5 ; yy++ ) { |
sergun2311 | 3:36de55e63fdf | 59 | if ( Piece[NewBlock.form][NewBlock.angle][xx][yy] != 0 ) |
sergun2311 | 3:36de55e63fdf | 60 | Field[NewBlock.y + yy - 2][NewBlock.x + xx - 2] = |
sergun2311 | 3:36de55e63fdf | 61 | Piece[NewBlock.form][NewBlock.angle][xx][yy]; |
sergun2311 | 3:36de55e63fdf | 62 | } |
sergun2311 | 3:36de55e63fdf | 63 | } |
sergun2311 | 1:b4aa36ae11ac | 64 | } |