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:
2:6b6986c3d2bd
Tetris V1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sergun2311 4:107d1d5a642e 1 /* Tetris game for touchscreen MicroTFT 320x240 and microcontorller LPC1768
sergun2311 4:107d1d5a642e 2 * Uses SeeedStudioTFTv2 library
sergun2311 4:107d1d5a642e 3 * Copyright (c) 2017 Sergejs Popovs sergun2311
sergun2311 4:107d1d5a642e 4 */
sergun2311 4:107d1d5a642e 5
sergun2311 0:645509d95b8d 6 #include "mbed.h"
sergun2311 0:645509d95b8d 7 #include <ctime>
sergun2311 0:645509d95b8d 8 #include "playGround.h"
sergun2311 0:645509d95b8d 9 #include "Block.h"
sergun2311 1:b4aa36ae11ac 10 #include "Field.h"
sergun2311 4:107d1d5a642e 11 #include "Define.h"
sergun2311 0:645509d95b8d 12
sergun2311 0:645509d95b8d 13 int main()
sergun2311 0:645509d95b8d 14 {
sergun2311 1:b4aa36ae11ac 15 int score = 0;
sergun2311 4:107d1d5a642e 16 int period = SPEED;
sergun2311 1:b4aa36ae11ac 17 bool flag;
sergun2311 0:645509d95b8d 18 clock_t start_s;
sergun2311 0:645509d95b8d 19 TFTInit();
sergun2311 4:107d1d5a642e 20 drawFrame();
sergun2311 0:645509d95b8d 21 drawMap();
sergun2311 0:645509d95b8d 22 while (1) {
sergun2311 0:645509d95b8d 23 Block NewBlock;
sergun2311 1:b4aa36ae11ac 24 flag = false;
sergun2311 0:645509d95b8d 25 drawMap();
sergun2311 2:6b6986c3d2bd 26 drawScore(score);
sergun2311 2:6b6986c3d2bd 27 drawNextBlock(NewBlock);
sergun2311 1:b4aa36ae11ac 28 while( !flag ) {
sergun2311 0:645509d95b8d 29 drawMap();
sergun2311 0:645509d95b8d 30 drawBlock(NewBlock);
sergun2311 1:b4aa36ae11ac 31 start_s = clock();
sergun2311 4:107d1d5a642e 32 while( start_s + period > clock() ) {
sergun2311 1:b4aa36ae11ac 33 if ( TouchStatus() ) {
sergun2311 1:b4aa36ae11ac 34 clrBlock(NewBlock);
sergun2311 1:b4aa36ae11ac 35 NewBlock = doGest(NewBlock);
sergun2311 1:b4aa36ae11ac 36 drawBlock(NewBlock);
sergun2311 1:b4aa36ae11ac 37 wait_ms(50);
sergun2311 1:b4aa36ae11ac 38 }
sergun2311 0:645509d95b8d 39 }
sergun2311 0:645509d95b8d 40 if ( NewBlock.CheckBottom() ) {
sergun2311 0:645509d95b8d 41 saveToField(NewBlock);
sergun2311 1:b4aa36ae11ac 42 flag = true;
sergun2311 0:645509d95b8d 43 } else {
sergun2311 0:645509d95b8d 44 clrBlock(NewBlock);
sergun2311 0:645509d95b8d 45 NewBlock.y += 1;
sergun2311 1:b4aa36ae11ac 46 drawBlock(NewBlock);
sergun2311 0:645509d95b8d 47 }
sergun2311 0:645509d95b8d 48 }
sergun2311 1:b4aa36ae11ac 49 score += checkLine();
sergun2311 4:107d1d5a642e 50 if ( score < 3200 )
sergun2311 4:107d1d5a642e 51 period = SPEED - score / 50;
sergun2311 2:6b6986c3d2bd 52 clrNextBlock(NewBlock);
sergun2311 1:b4aa36ae11ac 53 if ( checkGameOver() )
sergun2311 1:b4aa36ae11ac 54 break;
sergun2311 0:645509d95b8d 55 }
sergun2311 1:b4aa36ae11ac 56 gameOver(score);
sergun2311 4:107d1d5a642e 57
sergun2311 0:645509d95b8d 58 }