Tetris game on mikroTFT touchscreen and LPC1768
main.cpp@4:107d1d5a642e, 2017-03-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |