Tetris game on mikroTFT touchscreen and LPC1768
Field.cpp@3:36de55e63fdf, 2017-03-11 (annotated)
- Committer:
- sergun2311
- Date:
- Sat Mar 11 19:50:03 2017 +0000
- Revision:
- 3:36de55e63fdf
- Parent:
- 1:b4aa36ae11ac
- Child:
- 4:107d1d5a642e
tetris
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 | 0:645509d95b8d | 4 | |
sergun2311 | 1:b4aa36ae11ac | 5 | #define BLACK 0 |
sergun2311 | 0:645509d95b8d | 6 | #define MAXX 10 |
sergun2311 | 0:645509d95b8d | 7 | #define MAXY 12 |
sergun2311 | 0:645509d95b8d | 8 | |
sergun2311 | 1:b4aa36ae11ac | 9 | extern int Field[MAXY][MAXX] = {0}; |
sergun2311 | 1:b4aa36ae11ac | 10 | |
sergun2311 | 1:b4aa36ae11ac | 11 | int checkLine() { |
sergun2311 | 1:b4aa36ae11ac | 12 | int x, y, score = 0; |
sergun2311 | 1:b4aa36ae11ac | 13 | bool status; |
sergun2311 | 3:36de55e63fdf | 14 | for ( y = 0 ; y < MAXY ; y++ ) { |
sergun2311 | 1:b4aa36ae11ac | 15 | status = true; |
sergun2311 | 3:36de55e63fdf | 16 | for ( x = 0 ; x < MAXX ; x++ ) { |
sergun2311 | 1:b4aa36ae11ac | 17 | if ( Field[y][x] == BLACK ) |
sergun2311 | 1:b4aa36ae11ac | 18 | status = false; |
sergun2311 | 1:b4aa36ae11ac | 19 | } |
sergun2311 | 1:b4aa36ae11ac | 20 | if ( status ) { |
sergun2311 | 1:b4aa36ae11ac | 21 | score += 100; |
sergun2311 | 1:b4aa36ae11ac | 22 | int xx, yy; |
sergun2311 | 1:b4aa36ae11ac | 23 | for ( yy = y ; yy > 0 ; yy-- ) { |
sergun2311 | 3:36de55e63fdf | 24 | for (xx = 0 ; xx < MAXX ; xx++ ) { |
sergun2311 | 1:b4aa36ae11ac | 25 | Field[yy][xx] = Field[yy-1][xx]; |
sergun2311 | 1:b4aa36ae11ac | 26 | } |
sergun2311 | 1:b4aa36ae11ac | 27 | |
sergun2311 | 1:b4aa36ae11ac | 28 | } |
sergun2311 | 1:b4aa36ae11ac | 29 | } |
sergun2311 | 1:b4aa36ae11ac | 30 | } |
sergun2311 | 1:b4aa36ae11ac | 31 | if (score) |
sergun2311 | 1:b4aa36ae11ac | 32 | drawMapV2(); |
sergun2311 | 1:b4aa36ae11ac | 33 | return score; |
sergun2311 | 1:b4aa36ae11ac | 34 | } |
sergun2311 | 1:b4aa36ae11ac | 35 | |
sergun2311 | 1:b4aa36ae11ac | 36 | bool checkGameOver() |
sergun2311 | 1:b4aa36ae11ac | 37 | { |
sergun2311 | 1:b4aa36ae11ac | 38 | int x; |
sergun2311 | 3:36de55e63fdf | 39 | for ( x = 0 ; x < MAXX ; x++ ) |
sergun2311 | 1:b4aa36ae11ac | 40 | if ( Field[0][x] != BLACK ) |
sergun2311 | 1:b4aa36ae11ac | 41 | return true; |
sergun2311 | 1:b4aa36ae11ac | 42 | return false; |
sergun2311 | 3:36de55e63fdf | 43 | } |
sergun2311 | 3:36de55e63fdf | 44 | |
sergun2311 | 3:36de55e63fdf | 45 | void saveToField(Block NewBlock) |
sergun2311 | 3:36de55e63fdf | 46 | { |
sergun2311 | 3:36de55e63fdf | 47 | int xx , yy; |
sergun2311 | 3:36de55e63fdf | 48 | for ( xx = 0 ; xx < 5 ; xx++ ) { |
sergun2311 | 3:36de55e63fdf | 49 | for (yy = 0 ; yy < 5 ; yy++ ) { |
sergun2311 | 3:36de55e63fdf | 50 | if ( Piece[NewBlock.form][NewBlock.angle][xx][yy] != 0 ) |
sergun2311 | 3:36de55e63fdf | 51 | Field[NewBlock.y + yy - 2][NewBlock.x + xx - 2] = |
sergun2311 | 3:36de55e63fdf | 52 | Piece[NewBlock.form][NewBlock.angle][xx][yy]; |
sergun2311 | 3:36de55e63fdf | 53 | } |
sergun2311 | 3:36de55e63fdf | 54 | } |
sergun2311 | 1:b4aa36ae11ac | 55 | } |