Library to control the Tetris game area
Tetris.cpp@5:16c174ded933, 2016-05-05 (annotated)
- Committer:
- el14ja
- Date:
- Thu May 05 09:40:31 2016 +0000
- Revision:
- 5:16c174ded933
- Parent:
- 4:e4952be370d3
Submitting
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el14ja | 5:16c174ded933 | 1 | /** |
el14ja | 2:56dc50270349 | 2 | |
el14ja | 2:56dc50270349 | 3 | @file Tetris.cpp |
el14ja | 2:56dc50270349 | 4 | |
el14ja | 2:56dc50270349 | 5 | @brief Library containing all the functions for the game tetris |
el14ja | 2:56dc50270349 | 6 | |
el14ja | 2:56dc50270349 | 7 | */ |
el14ja | 2:56dc50270349 | 8 | |
el14ja | 2:56dc50270349 | 9 | #include "Tetris.h" |
el14ja | 2:56dc50270349 | 10 | |
el14ja | 2:56dc50270349 | 11 | N5110 screen (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3); |
el14ja | 3:af0a7a4464e5 | 12 | int tetrominoe[7][4] = {{0x00F0,0x4444,0x0F00,0x2222},{0x0071,0x0226,0x0470,0x0322},{0x0074,0x0622,0x0170,0x0223},{0x0033,0x0033,0x0033,0x0033},{0x0072,0x0262,0x0270,0x0232},{0x0036,0x0462,0x0360,0x0231},{0x0063,0x0264,0x0630,0x0132}}; |
el14ja | 5:16c174ded933 | 13 | |
el14ja | 5:16c174ded933 | 14 | Tetris::Tetris() |
el14ja | 5:16c174ded933 | 15 | { |
el14ja | 4:e4952be370d3 | 16 | } |
el14ja | 4:e4952be370d3 | 17 | |
el14ja | 4:e4952be370d3 | 18 | void Tetris::gameSetup() |
el14ja | 4:e4952be370d3 | 19 | { |
el14ja | 4:e4952be370d3 | 20 | |
el14ja | 5:16c174ded933 | 21 | //prints the starting game info on the screen |
el14ja | 4:e4952be370d3 | 22 | screen.printString("Level:",0,0); |
el14ja | 4:e4952be370d3 | 23 | screen.printString("Score:",0,2); |
el14ja | 4:e4952be370d3 | 24 | screen.printString("0",0,1); |
el14ja | 4:e4952be370d3 | 25 | screen.printString("Next",0,4); |
el14ja | 4:e4952be370d3 | 26 | |
el14ja | 4:e4952be370d3 | 27 | |
el14ja | 4:e4952be370d3 | 28 | //creats the game boarder |
el14ja | 4:e4952be370d3 | 29 | screen.drawRect(40,0,33,47,0); |
el14ja | 4:e4952be370d3 | 30 | screen.drawRect(41,1,31,46,0); |
el14ja | 4:e4952be370d3 | 31 | screen.refresh(); |
el14ja | 4:e4952be370d3 | 32 | |
el14ja | 4:e4952be370d3 | 33 | |
el14ja | 3:af0a7a4464e5 | 34 | } |
el14ja | 3:af0a7a4464e5 | 35 | |
el14ja | 3:af0a7a4464e5 | 36 | void Tetris::gameInfo(int score,int level,int next) |
el14ja | 3:af0a7a4464e5 | 37 | { |
el14ja | 3:af0a7a4464e5 | 38 | //outputs the level |
el14ja | 3:af0a7a4464e5 | 39 | char buffer[6]; |
el14ja | 3:af0a7a4464e5 | 40 | int length = sprintf(buffer,"%d",level); |
el14ja | 3:af0a7a4464e5 | 41 | if(length <=6) { |
el14ja | 3:af0a7a4464e5 | 42 | screen.printString(" ",0,1); |
el14ja | 3:af0a7a4464e5 | 43 | screen.printString(buffer,0,1); |
el14ja | 3:af0a7a4464e5 | 44 | } |
el14ja | 3:af0a7a4464e5 | 45 | //outputs the score |
el14ja | 3:af0a7a4464e5 | 46 | length = sprintf(buffer,"%d",score); |
el14ja | 3:af0a7a4464e5 | 47 | if(length <=6) { |
el14ja | 3:af0a7a4464e5 | 48 | screen.printString(" ",0,3); |
el14ja | 3:af0a7a4464e5 | 49 | screen.printString(buffer,0,3); |
el14ja | 3:af0a7a4464e5 | 50 | } |
el14ja | 3:af0a7a4464e5 | 51 | |
el14ja | 3:af0a7a4464e5 | 52 | for(int i = 0; i <4; i++) { //clears the next piece shape before the new one is displayed |
el14ja | 3:af0a7a4464e5 | 53 | for(int j = 0; j <2; j++) { |
el14ja | 3:af0a7a4464e5 | 54 | clearGamePixel(-6+i,12+j); |
el14ja | 3:af0a7a4464e5 | 55 | } |
el14ja | 3:af0a7a4464e5 | 56 | } |
el14ja | 5:16c174ded933 | 57 | piecePlace(-6,12,tetrominoe[next][0]); //places the next piece in the next piece position |
el14ja | 3:af0a7a4464e5 | 58 | } |
el14ja | 3:af0a7a4464e5 | 59 | |
el14ja | 5:16c174ded933 | 60 | void Tetris::gamePixel(int x, int y) |
el14ja | 3:af0a7a4464e5 | 61 | { |
el14ja | 5:16c174ded933 | 62 | screen.drawRect(42+(3*x),2+(3*y),2,2,1); //draws a 3x3 square on the screen relative to the game area |
el14ja | 2:56dc50270349 | 63 | screen.refresh(); |
el14ja | 4:e4952be370d3 | 64 | } |
el14ja | 5:16c174ded933 | 65 | |
el14ja | 5:16c174ded933 | 66 | void Tetris::clearGamePixel(int x, int y) |
el14ja | 5:16c174ded933 | 67 | { |
el14ja | 2:56dc50270349 | 68 | for(int i =0; i<3; i++) { |
el14ja | 2:56dc50270349 | 69 | for(int j =0; j<3; j++) { |
el14ja | 5:16c174ded933 | 70 | screen.clearPixel(42+(x*3)+i,2+(3*y)+j); //clears a 3x3 sqaure relative to the game area |
el14ja | 2:56dc50270349 | 71 | } |
el14ja | 2:56dc50270349 | 72 | } |
el14ja | 2:56dc50270349 | 73 | screen.refresh(); |
el14ja | 5:16c174ded933 | 74 | } |
el14ja | 5:16c174ded933 | 75 | |
el14ja | 5:16c174ded933 | 76 | void Tetris::clearGame() |
el14ja | 5:16c174ded933 | 77 | { |
el14ja | 2:56dc50270349 | 78 | for(int i = 0; i<30; i++) { |
el14ja | 2:56dc50270349 | 79 | for(int j = 0; j<45; j++) { |
el14ja | 2:56dc50270349 | 80 | screen.clearPixel(42+i,2+j); |
el14ja | 2:56dc50270349 | 81 | } |
el14ja | 2:56dc50270349 | 82 | } |
el14ja | 2:56dc50270349 | 83 | screen.refresh(); |
el14ja | 5:16c174ded933 | 84 | } |
el14ja | 5:16c174ded933 | 85 | |
el14ja | 2:56dc50270349 | 86 | void Tetris::piecePlace(int x,int y,int shape) |
el14ja | 2:56dc50270349 | 87 | { |
el14ja | 5:16c174ded933 | 88 | int count = 0; //converts the hex value into seperate bits |
el14ja | 2:56dc50270349 | 89 | for(int i = 0; i<4; i++) { |
el14ja | 2:56dc50270349 | 90 | for(int j = 0; j<4; j++) { |
el14ja | 2:56dc50270349 | 91 | |
el14ja | 5:16c174ded933 | 92 | int bit = shape & (1<<count); |
el14ja | 2:56dc50270349 | 93 | |
el14ja | 5:16c174ded933 | 94 | if (bit) { //prints each 1 bit |
el14ja | 2:56dc50270349 | 95 | gamePixel(j+x,i+y); |
el14ja | 2:56dc50270349 | 96 | } |
el14ja | 2:56dc50270349 | 97 | count++; |
el14ja | 2:56dc50270349 | 98 | } |
el14ja | 2:56dc50270349 | 99 | } |
el14ja | 2:56dc50270349 | 100 | } |
el14ja | 2:56dc50270349 | 101 | |
el14ja | 2:56dc50270349 | 102 | void Tetris::pieceClear(int x,int y,int shape) |
el14ja | 2:56dc50270349 | 103 | { |
el14ja | 5:16c174ded933 | 104 | int count = 0; //converts the hex value into seperate bits |
el14ja | 2:56dc50270349 | 105 | for(int i = 0; i<4; i++) { |
el14ja | 2:56dc50270349 | 106 | for(int j = 0; j<4; j++) { |
el14ja | 2:56dc50270349 | 107 | |
el14ja | 2:56dc50270349 | 108 | int bit = shape & (1<<count); |
el14ja | 2:56dc50270349 | 109 | |
el14ja | 2:56dc50270349 | 110 | if (bit) { |
el14ja | 5:16c174ded933 | 111 | clearGamePixel(j+x,i+y); //clears each bit |
el14ja | 2:56dc50270349 | 112 | } |
el14ja | 2:56dc50270349 | 113 | count++; |
el14ja | 2:56dc50270349 | 114 | } |
el14ja | 2:56dc50270349 | 115 | } |
el14ja | 5:16c174ded933 | 116 | } |