Tetris game on mikroTFT touchscreen and LPC1768

Dependencies:   Tetris

Dependents:   Tetris

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?

UserRevisionLine numberNew 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 }