ELEC2645 (2015/16)
/
Tetris_nearcomplete
Main.cpp@2:dc75e15229ee, 2016-05-07 (annotated)
- Committer:
- el14kb
- Date:
- Sat May 07 14:36:03 2016 +0000
- Revision:
- 2:dc75e15229ee
- Parent:
- 1:7da5b36d5f50
Game doesn't work entirely, but it's a 'form' of Tetris.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el14kb | 1:7da5b36d5f50 | 1 | #include "mbed.h" |
el14kb | 1:7da5b36d5f50 | 2 | #include "N5110.h" |
el14kb | 2:dc75e15229ee | 3 | #include "Pieces.h" |
el14kb | 2:dc75e15229ee | 4 | #include <vector> |
el14kb | 2:dc75e15229ee | 5 | |
el14kb | 1:7da5b36d5f50 | 6 | |
el14kb | 1:7da5b36d5f50 | 7 | //Tetris by Kristian Bridges |
el14kb | 1:7da5b36d5f50 | 8 | |
el14kb | 1:7da5b36d5f50 | 9 | // VCC, SCE, RST, D/C, MOSI, SCLK, LED |
el14kb | 1:7da5b36d5f50 | 10 | N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3); |
el14kb | 1:7da5b36d5f50 | 11 | |
el14kb | 1:7da5b36d5f50 | 12 | AnalogIn potX(PTB2); |
el14kb | 1:7da5b36d5f50 | 13 | AnalogIn potY(PTB3); |
el14kb | 1:7da5b36d5f50 | 14 | DigitalIn joyButton(PTB11); |
el14kb | 2:dc75e15229ee | 15 | DigitalIn buttonA(PTB18); |
el14kb | 2:dc75e15229ee | 16 | DigitalIn buttonB(PTB19); |
el14kb | 2:dc75e15229ee | 17 | InterruptIn A(PTB18); |
el14kb | 2:dc75e15229ee | 18 | InterruptIn B(PTB19); |
el14kb | 1:7da5b36d5f50 | 19 | |
el14kb | 2:dc75e15229ee | 20 | #define tolerance 0.1f |
el14kb | 2:dc75e15229ee | 21 | #define down_tolerance -0.1f |
el14kb | 2:dc75e15229ee | 22 | #define right_tolerance -0.1f |
el14kb | 1:7da5b36d5f50 | 23 | |
el14kb | 1:7da5b36d5f50 | 24 | Ticker checkJoy; |
el14kb | 2:dc75e15229ee | 25 | Ticker gameCheck; |
el14kb | 1:7da5b36d5f50 | 26 | |
el14kb | 1:7da5b36d5f50 | 27 | enum direction_t { |
el14kb | 1:7da5b36d5f50 | 28 | UP, //0 |
el14kb | 1:7da5b36d5f50 | 29 | DOWN, //1 |
el14kb | 1:7da5b36d5f50 | 30 | LEFT, //2 |
el14kb | 1:7da5b36d5f50 | 31 | RIGHT, //3 |
el14kb | 1:7da5b36d5f50 | 32 | CENTRE, //4 |
el14kb | 1:7da5b36d5f50 | 33 | UNKNOWN //5 |
el14kb | 1:7da5b36d5f50 | 34 | }; |
el14kb | 1:7da5b36d5f50 | 35 | |
el14kb | 1:7da5b36d5f50 | 36 | typedef struct { |
el14kb | 1:7da5b36d5f50 | 37 | float initial_x,initial_y; |
el14kb | 1:7da5b36d5f50 | 38 | float current_x,current_y; |
el14kb | 1:7da5b36d5f50 | 39 | int button; |
el14kb | 1:7da5b36d5f50 | 40 | direction_t direction; |
el14kb | 2:dc75e15229ee | 41 | int buttonA; |
el14kb | 2:dc75e15229ee | 42 | int buttonB; |
el14kb | 1:7da5b36d5f50 | 43 | } joystick; |
el14kb | 1:7da5b36d5f50 | 44 | |
el14kb | 1:7da5b36d5f50 | 45 | joystick joy; |
el14kb | 2:dc75e15229ee | 46 | joystick rotate_buttons; |
el14kb | 1:7da5b36d5f50 | 47 | |
el14kb | 2:dc75e15229ee | 48 | struct Tetris { |
el14kb | 2:dc75e15229ee | 49 | int xP; //current x position |
el14kb | 2:dc75e15229ee | 50 | int yP; //current y position |
el14kb | 2:dc75e15229ee | 51 | int next_xP; //next potential x position |
el14kb | 2:dc75e15229ee | 52 | int next_yP; //next potential y position |
el14kb | 2:dc75e15229ee | 53 | int level; |
el14kb | 2:dc75e15229ee | 54 | int line_check; |
el14kb | 2:dc75e15229ee | 55 | int total_lines; |
el14kb | 2:dc75e15229ee | 56 | int current_shape; |
el14kb | 2:dc75e15229ee | 57 | int piece_in_play; |
el14kb | 2:dc75e15229ee | 58 | int orientation; |
el14kb | 2:dc75e15229ee | 59 | int score; |
el14kb | 2:dc75e15229ee | 60 | int game_over; |
el14kb | 2:dc75e15229ee | 61 | int orientation_copy; |
el14kb | 2:dc75e15229ee | 62 | int currentPiece[10][10]; |
el14kb | 2:dc75e15229ee | 63 | } tetris; |
el14kb | 2:dc75e15229ee | 64 | |
el14kb | 2:dc75e15229ee | 65 | int g_bank_index = 0; |
el14kb | 2:dc75e15229ee | 66 | int g_bank_index_copy = 4; |
el14kb | 1:7da5b36d5f50 | 67 | volatile int g_joyFlag = 0; |
el14kb | 2:dc75e15229ee | 68 | volatile int g_rotate_clock_flag = 0; |
el14kb | 2:dc75e15229ee | 69 | volatile int g_rotate_anticlock_flag = 0; |
el14kb | 2:dc75e15229ee | 70 | int currentState[45][40]; |
el14kb | 2:dc75e15229ee | 71 | volatile int g_call_game_Flag = 0; |
el14kb | 2:dc75e15229ee | 72 | float timer = 1.0; |
el14kb | 1:7da5b36d5f50 | 73 | |
el14kb | 1:7da5b36d5f50 | 74 | void menu(); |
el14kb | 2:dc75e15229ee | 75 | void cal(); |
el14kb | 1:7da5b36d5f50 | 76 | void joyUpdate(); |
el14kb | 1:7da5b36d5f50 | 77 | void game(); |
el14kb | 1:7da5b36d5f50 | 78 | void options(); |
el14kb | 2:dc75e15229ee | 79 | void orientation(); |
el14kb | 2:dc75e15229ee | 80 | void draw_piece(); |
el14kb | 2:dc75e15229ee | 81 | void array_checker(); |
el14kb | 2:dc75e15229ee | 82 | void piece_generator(); |
el14kb | 2:dc75e15229ee | 83 | void anticlockwise(); |
el14kb | 2:dc75e15229ee | 84 | void clockwise(); |
el14kb | 2:dc75e15229ee | 85 | void gameCheck_isr(); |
el14kb | 1:7da5b36d5f50 | 86 | |
el14kb | 1:7da5b36d5f50 | 87 | int main() |
el14kb | 1:7da5b36d5f50 | 88 | { |
el14kb | 1:7da5b36d5f50 | 89 | lcd.init(); |
el14kb | 1:7da5b36d5f50 | 90 | lcd.clear(); |
el14kb | 1:7da5b36d5f50 | 91 | lcd.printString("Tetris",24,1); |
el14kb | 1:7da5b36d5f50 | 92 | lcd.printString("by",36,2); |
el14kb | 1:7da5b36d5f50 | 93 | lcd.printString("K.Bridges",15,3); |
el14kb | 1:7da5b36d5f50 | 94 | lcd.printString("SID: 200859491",0,5); |
el14kb | 1:7da5b36d5f50 | 95 | wait(2); |
el14kb | 1:7da5b36d5f50 | 96 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 97 | cal(); |
el14kb | 1:7da5b36d5f50 | 98 | checkJoy.attach(&joyUpdate,0.01); |
el14kb | 1:7da5b36d5f50 | 99 | menu(); |
el14kb | 1:7da5b36d5f50 | 100 | } |
el14kb | 1:7da5b36d5f50 | 101 | |
el14kb | 2:dc75e15229ee | 102 | void drawPiece() |
el14kb | 1:7da5b36d5f50 | 103 | { |
el14kb | 1:7da5b36d5f50 | 104 | |
el14kb | 2:dc75e15229ee | 105 | } |
el14kb | 2:dc75e15229ee | 106 | void menu() |
el14kb | 2:dc75e15229ee | 107 | { |
el14kb | 1:7da5b36d5f50 | 108 | int x,y; |
el14kb | 1:7da5b36d5f50 | 109 | |
el14kb | 1:7da5b36d5f50 | 110 | while(joy.button == 0) { |
el14kb | 1:7da5b36d5f50 | 111 | if(g_joyFlag) { |
el14kb | 1:7da5b36d5f50 | 112 | g_joyFlag = 0; |
el14kb | 1:7da5b36d5f50 | 113 | |
el14kb | 1:7da5b36d5f50 | 114 | switch(joy.direction) { |
el14kb | 1:7da5b36d5f50 | 115 | case UP: |
el14kb | 1:7da5b36d5f50 | 116 | if(g_bank_index == 0) { |
el14kb | 1:7da5b36d5f50 | 117 | g_bank_index = 2; |
el14kb | 1:7da5b36d5f50 | 118 | break; |
el14kb | 1:7da5b36d5f50 | 119 | } else |
el14kb | 1:7da5b36d5f50 | 120 | g_bank_index--; |
el14kb | 1:7da5b36d5f50 | 121 | break; |
el14kb | 1:7da5b36d5f50 | 122 | case DOWN: |
el14kb | 1:7da5b36d5f50 | 123 | if(g_bank_index == 2) { |
el14kb | 1:7da5b36d5f50 | 124 | g_bank_index = 0; |
el14kb | 1:7da5b36d5f50 | 125 | } else |
el14kb | 1:7da5b36d5f50 | 126 | g_bank_index++; |
el14kb | 1:7da5b36d5f50 | 127 | } |
el14kb | 2:dc75e15229ee | 128 | |
el14kb | 2:dc75e15229ee | 129 | if(g_bank_index_copy != g_bank_index) { |
el14kb | 2:dc75e15229ee | 130 | g_bank_index_copy = g_bank_index; |
el14kb | 2:dc75e15229ee | 131 | |
el14kb | 2:dc75e15229ee | 132 | if(g_bank_index == 0) { |
el14kb | 2:dc75e15229ee | 133 | |
el14kb | 2:dc75e15229ee | 134 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 135 | lcd.printString("New Game",18,1); |
el14kb | 2:dc75e15229ee | 136 | lcd.printString("Achievements",6,2); |
el14kb | 2:dc75e15229ee | 137 | lcd.printString("Options",21,3); |
el14kb | 2:dc75e15229ee | 138 | |
el14kb | 2:dc75e15229ee | 139 | for(x=0; x<WIDTH; x++) { |
el14kb | 2:dc75e15229ee | 140 | for(y=7; y<16; y++) { |
el14kb | 2:dc75e15229ee | 141 | if(lcd.getPixel(x,y)) { |
el14kb | 2:dc75e15229ee | 142 | lcd.clearPixel(x,y); |
el14kb | 2:dc75e15229ee | 143 | } else { |
el14kb | 2:dc75e15229ee | 144 | lcd.setPixel(x,y); |
el14kb | 2:dc75e15229ee | 145 | } |
el14kb | 1:7da5b36d5f50 | 146 | } |
el14kb | 1:7da5b36d5f50 | 147 | } |
el14kb | 1:7da5b36d5f50 | 148 | } |
el14kb | 2:dc75e15229ee | 149 | if(g_bank_index == 1) { |
el14kb | 2:dc75e15229ee | 150 | |
el14kb | 2:dc75e15229ee | 151 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 152 | lcd.printString("New Game",18,1); |
el14kb | 2:dc75e15229ee | 153 | lcd.printString("Achievements",6,2); |
el14kb | 2:dc75e15229ee | 154 | lcd.printString("Options",21,3); |
el14kb | 2:dc75e15229ee | 155 | |
el14kb | 2:dc75e15229ee | 156 | for(x=0; x<WIDTH; x++) { |
el14kb | 2:dc75e15229ee | 157 | for(y=15; y<24; y++) { |
el14kb | 2:dc75e15229ee | 158 | if(lcd.getPixel(x,y)) { |
el14kb | 2:dc75e15229ee | 159 | lcd.clearPixel(x,y); |
el14kb | 2:dc75e15229ee | 160 | } else { |
el14kb | 2:dc75e15229ee | 161 | lcd.setPixel(x,y); |
el14kb | 2:dc75e15229ee | 162 | } |
el14kb | 1:7da5b36d5f50 | 163 | } |
el14kb | 1:7da5b36d5f50 | 164 | } |
el14kb | 1:7da5b36d5f50 | 165 | } |
el14kb | 2:dc75e15229ee | 166 | if(g_bank_index == 2) { |
el14kb | 2:dc75e15229ee | 167 | |
el14kb | 2:dc75e15229ee | 168 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 169 | lcd.printString("New Game",18,1); |
el14kb | 2:dc75e15229ee | 170 | lcd.printString("Achievements",6,2); |
el14kb | 2:dc75e15229ee | 171 | lcd.printString("Options",21,3); |
el14kb | 2:dc75e15229ee | 172 | |
el14kb | 2:dc75e15229ee | 173 | for(x=0; x<WIDTH; x++) { |
el14kb | 2:dc75e15229ee | 174 | for(y=23; y<32; y++) { |
el14kb | 2:dc75e15229ee | 175 | if(lcd.getPixel(x,y)) { |
el14kb | 2:dc75e15229ee | 176 | lcd.clearPixel(x,y); |
el14kb | 2:dc75e15229ee | 177 | } else { |
el14kb | 2:dc75e15229ee | 178 | lcd.setPixel(x,y); |
el14kb | 2:dc75e15229ee | 179 | } |
el14kb | 1:7da5b36d5f50 | 180 | } |
el14kb | 1:7da5b36d5f50 | 181 | } |
el14kb | 1:7da5b36d5f50 | 182 | } |
el14kb | 2:dc75e15229ee | 183 | lcd.refresh(); |
el14kb | 2:dc75e15229ee | 184 | } else if(g_bank_index_copy == g_bank_index) { |
el14kb | 2:dc75e15229ee | 185 | sleep(); |
el14kb | 1:7da5b36d5f50 | 186 | } |
el14kb | 1:7da5b36d5f50 | 187 | } |
el14kb | 1:7da5b36d5f50 | 188 | }//end of while loop |
el14kb | 1:7da5b36d5f50 | 189 | |
el14kb | 2:dc75e15229ee | 190 | if(g_bank_index == 0) { |
el14kb | 2:dc75e15229ee | 191 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 192 | game(); |
el14kb | 2:dc75e15229ee | 193 | } else if(g_bank_index == 1) { |
el14kb | 2:dc75e15229ee | 194 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 195 | } else if(g_bank_index == 2) { |
el14kb | 2:dc75e15229ee | 196 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 197 | options(); |
el14kb | 2:dc75e15229ee | 198 | } |
el14kb | 1:7da5b36d5f50 | 199 | }//end of function |
el14kb | 1:7da5b36d5f50 | 200 | |
el14kb | 2:dc75e15229ee | 201 | void cal() |
el14kb | 1:7da5b36d5f50 | 202 | { |
el14kb | 1:7da5b36d5f50 | 203 | joy.initial_x = potX; |
el14kb | 1:7da5b36d5f50 | 204 | joy.initial_y = potY; |
el14kb | 1:7da5b36d5f50 | 205 | joyButton.mode(PullDown); |
el14kb | 2:dc75e15229ee | 206 | buttonA.mode(PullDown); //1 if pressed |
el14kb | 2:dc75e15229ee | 207 | buttonB.mode(PullDown); //1 if pressed |
el14kb | 2:dc75e15229ee | 208 | A.fall(&anticlockwise); |
el14kb | 2:dc75e15229ee | 209 | B.fall(&clockwise); |
el14kb | 1:7da5b36d5f50 | 210 | } |
el14kb | 1:7da5b36d5f50 | 211 | |
el14kb | 1:7da5b36d5f50 | 212 | void joyUpdate() |
el14kb | 1:7da5b36d5f50 | 213 | { |
el14kb | 1:7da5b36d5f50 | 214 | joy.current_x = potX - joy.initial_x; //current x-position |
el14kb | 1:7da5b36d5f50 | 215 | joy.current_y = potY - joy.initial_y; //current y-position |
el14kb | 1:7da5b36d5f50 | 216 | joy.button = joyButton; //current button state |
el14kb | 2:dc75e15229ee | 217 | rotate_buttons.buttonA = buttonA; //current anti-clockwise state |
el14kb | 2:dc75e15229ee | 218 | rotate_buttons.buttonB = buttonB; //current clockwise state |
el14kb | 1:7da5b36d5f50 | 219 | |
el14kb | 1:7da5b36d5f50 | 220 | if((joy.current_y) > tolerance && fabs(joy.current_x) < tolerance) { //fabs returns an absolute value |
el14kb | 1:7da5b36d5f50 | 221 | joy.direction = UP; |
el14kb | 1:7da5b36d5f50 | 222 | } else if((joy.current_y) < down_tolerance && fabs(joy.current_x) < tolerance) { |
el14kb | 1:7da5b36d5f50 | 223 | joy.direction = DOWN; |
el14kb | 1:7da5b36d5f50 | 224 | } else if((joy.current_x) > tolerance && fabs(joy.current_y) < tolerance) { |
el14kb | 1:7da5b36d5f50 | 225 | joy.direction = LEFT; |
el14kb | 2:dc75e15229ee | 226 | } else if((joy.current_x) < right_tolerance && fabs(joy.current_y) < tolerance) { |
el14kb | 1:7da5b36d5f50 | 227 | joy.direction = RIGHT; |
el14kb | 1:7da5b36d5f50 | 228 | } else if(fabs(joy.current_x) < tolerance && fabs(joy.current_y) < tolerance) { |
el14kb | 1:7da5b36d5f50 | 229 | joy.direction = CENTRE; |
el14kb | 1:7da5b36d5f50 | 230 | } else |
el14kb | 1:7da5b36d5f50 | 231 | joy.direction = UNKNOWN; |
el14kb | 1:7da5b36d5f50 | 232 | g_joyFlag = 1; |
el14kb | 1:7da5b36d5f50 | 233 | } |
el14kb | 2:dc75e15229ee | 234 | void piece_generator() |
el14kb | 1:7da5b36d5f50 | 235 | { |
el14kb | 2:dc75e15229ee | 236 | |
el14kb | 2:dc75e15229ee | 237 | if(tetris.piece_in_play == 0) { //initialisation of a piece in play |
el14kb | 2:dc75e15229ee | 238 | tetris.current_shape = rand() %7; |
el14kb | 2:dc75e15229ee | 239 | tetris.xP = rand() % 39 + 0; //39 is the least significant x position (xP is the current position of the piece) |
el14kb | 2:dc75e15229ee | 240 | tetris.yP = -5; //change if collision rules check out (yP is the current position of the piece) |
el14kb | 2:dc75e15229ee | 241 | tetris.orientation = 0; |
el14kb | 2:dc75e15229ee | 242 | tetris.piece_in_play = 1; //defines whether a piece is in play |
el14kb | 1:7da5b36d5f50 | 243 | } |
el14kb | 1:7da5b36d5f50 | 244 | } |
el14kb | 1:7da5b36d5f50 | 245 | |
el14kb | 1:7da5b36d5f50 | 246 | void game() |
el14kb | 1:7da5b36d5f50 | 247 | { |
el14kb | 2:dc75e15229ee | 248 | tetris.orientation_copy = 5; |
el14kb | 2:dc75e15229ee | 249 | tetris.game_over = 0; |
el14kb | 2:dc75e15229ee | 250 | lcd.printString("Score:",0,1); |
el14kb | 2:dc75e15229ee | 251 | lcd.printString("Lines:",0,4); |
el14kb | 2:dc75e15229ee | 252 | lcd.drawRect(38,0,42,47,0); |
el14kb | 2:dc75e15229ee | 253 | srand(time(NULL)); |
el14kb | 2:dc75e15229ee | 254 | for(int y = 0; y<45; y++) { |
el14kb | 2:dc75e15229ee | 255 | for(int x = 0; x<40; x++) { |
el14kb | 2:dc75e15229ee | 256 | if(y == 44) { |
el14kb | 2:dc75e15229ee | 257 | currentState[y][x] = 1; |
el14kb | 2:dc75e15229ee | 258 | } else |
el14kb | 2:dc75e15229ee | 259 | currentState[y][x] = 0; |
el14kb | 2:dc75e15229ee | 260 | } |
el14kb | 2:dc75e15229ee | 261 | } |
el14kb | 2:dc75e15229ee | 262 | |
el14kb | 2:dc75e15229ee | 263 | gameCheck.attach(&gameCheck_isr,timer); |
el14kb | 2:dc75e15229ee | 264 | while(tetris.game_over == 0) { |
el14kb | 2:dc75e15229ee | 265 | if(joy.direction == UP) { |
el14kb | 2:dc75e15229ee | 266 | timer = 0.01; |
el14kb | 2:dc75e15229ee | 267 | } else timer = 0.1; |
el14kb | 1:7da5b36d5f50 | 268 | |
el14kb | 2:dc75e15229ee | 269 | if(g_call_game_Flag == 1) { |
el14kb | 2:dc75e15229ee | 270 | piece_generator(); |
el14kb | 2:dc75e15229ee | 271 | orientation(); |
el14kb | 2:dc75e15229ee | 272 | draw_piece(); |
el14kb | 2:dc75e15229ee | 273 | for(int y=0; y<45; y++) { |
el14kb | 2:dc75e15229ee | 274 | for(int x=0; x<40; x++) { |
el14kb | 2:dc75e15229ee | 275 | if(currentState[y][x] == 1) { |
el14kb | 2:dc75e15229ee | 276 | lcd.setPixel(x+39,y+1); |
el14kb | 2:dc75e15229ee | 277 | } else |
el14kb | 2:dc75e15229ee | 278 | lcd.clearPixel(x+39,y+1); |
el14kb | 2:dc75e15229ee | 279 | } |
el14kb | 2:dc75e15229ee | 280 | } |
el14kb | 2:dc75e15229ee | 281 | |
el14kb | 2:dc75e15229ee | 282 | for(int m = 0; m<10; m++) { |
el14kb | 2:dc75e15229ee | 283 | for(int n = 0; n<10; n++) { |
el14kb | 2:dc75e15229ee | 284 | if(tetris.currentPiece[m][n] == 1) { |
el14kb | 2:dc75e15229ee | 285 | lcd.setPixel(tetris.xP+n+39,tetris.yP+m+1); |
el14kb | 2:dc75e15229ee | 286 | } |
el14kb | 2:dc75e15229ee | 287 | } |
el14kb | 2:dc75e15229ee | 288 | } |
el14kb | 2:dc75e15229ee | 289 | |
el14kb | 2:dc75e15229ee | 290 | lcd.refresh(); |
el14kb | 2:dc75e15229ee | 291 | array_checker(); |
el14kb | 2:dc75e15229ee | 292 | } |
el14kb | 2:dc75e15229ee | 293 | sleep(); |
el14kb | 2:dc75e15229ee | 294 | } |
el14kb | 2:dc75e15229ee | 295 | gameCheck.detach(); |
el14kb | 2:dc75e15229ee | 296 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 297 | lcd.printString("Game Over",15,2); |
el14kb | 2:dc75e15229ee | 298 | wait(1); |
el14kb | 2:dc75e15229ee | 299 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 300 | menu(); |
el14kb | 1:7da5b36d5f50 | 301 | } |
el14kb | 1:7da5b36d5f50 | 302 | |
el14kb | 1:7da5b36d5f50 | 303 | void options() |
el14kb | 1:7da5b36d5f50 | 304 | { |
el14kb | 2:dc75e15229ee | 305 | float brightness = 0.5; |
el14kb | 2:dc75e15229ee | 306 | |
el14kb | 2:dc75e15229ee | 307 | lcd.printString("UP = +",24,0); |
el14kb | 2:dc75e15229ee | 308 | lcd.printString("DOWN = -",18,1); |
el14kb | 2:dc75e15229ee | 309 | lcd.printString("Press B",24,2); |
el14kb | 2:dc75e15229ee | 310 | lcd.printString("to exit",21,3); |
el14kb | 2:dc75e15229ee | 311 | |
el14kb | 2:dc75e15229ee | 312 | while(joy.button == 0) { |
el14kb | 2:dc75e15229ee | 313 | if(joy.direction == UP) { |
el14kb | 2:dc75e15229ee | 314 | brightness += 0.1f; |
el14kb | 2:dc75e15229ee | 315 | lcd.setBrightness(brightness); |
el14kb | 2:dc75e15229ee | 316 | } else if(joy.direction == DOWN) { |
el14kb | 2:dc75e15229ee | 317 | brightness -= 0.1f; |
el14kb | 2:dc75e15229ee | 318 | lcd.setBrightness(brightness); |
el14kb | 2:dc75e15229ee | 319 | } |
el14kb | 2:dc75e15229ee | 320 | } |
el14kb | 2:dc75e15229ee | 321 | lcd.clear(); |
el14kb | 2:dc75e15229ee | 322 | menu(); |
el14kb | 1:7da5b36d5f50 | 323 | } |
el14kb | 2:dc75e15229ee | 324 | |
el14kb | 2:dc75e15229ee | 325 | |
el14kb | 2:dc75e15229ee | 326 | void orientation() |
el14kb | 2:dc75e15229ee | 327 | { |
el14kb | 2:dc75e15229ee | 328 | |
el14kb | 2:dc75e15229ee | 329 | |
el14kb | 2:dc75e15229ee | 330 | if(g_rotate_clock_flag == 1) { |
el14kb | 2:dc75e15229ee | 331 | g_rotate_clock_flag = 0; |
el14kb | 2:dc75e15229ee | 332 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 333 | tetris.orientation = 0; |
el14kb | 2:dc75e15229ee | 334 | } else if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 335 | tetris.orientation++; |
el14kb | 2:dc75e15229ee | 336 | } |
el14kb | 2:dc75e15229ee | 337 | } |
el14kb | 2:dc75e15229ee | 338 | |
el14kb | 2:dc75e15229ee | 339 | if(g_rotate_anticlock_flag == 1) { |
el14kb | 2:dc75e15229ee | 340 | g_rotate_anticlock_flag = 0; |
el14kb | 2:dc75e15229ee | 341 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 342 | tetris.orientation = 3; |
el14kb | 2:dc75e15229ee | 343 | } else if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 344 | tetris.orientation--; |
el14kb | 2:dc75e15229ee | 345 | } |
el14kb | 2:dc75e15229ee | 346 | } |
el14kb | 2:dc75e15229ee | 347 | if(tetris.orientation_copy != tetris.orientation) { |
el14kb | 2:dc75e15229ee | 348 | tetris.orientation_copy = tetris.orientation; |
el14kb | 2:dc75e15229ee | 349 | |
el14kb | 2:dc75e15229ee | 350 | if(tetris.current_shape == 0) { //Square |
el14kb | 2:dc75e15229ee | 351 | if(tetris.orientation == 0 || 1 || 2 || 3) { |
el14kb | 2:dc75e15229ee | 352 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 353 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 354 | tetris.currentPiece[m][n] = O[m][n]; |
el14kb | 2:dc75e15229ee | 355 | } |
el14kb | 2:dc75e15229ee | 356 | } |
el14kb | 2:dc75e15229ee | 357 | } |
el14kb | 2:dc75e15229ee | 358 | } |
el14kb | 2:dc75e15229ee | 359 | |
el14kb | 2:dc75e15229ee | 360 | if(tetris.current_shape == 1) { //I |
el14kb | 2:dc75e15229ee | 361 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 362 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 363 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 364 | tetris.currentPiece[m][n] = I0[m][n]; |
el14kb | 2:dc75e15229ee | 365 | } |
el14kb | 2:dc75e15229ee | 366 | } |
el14kb | 2:dc75e15229ee | 367 | } |
el14kb | 2:dc75e15229ee | 368 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 369 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 370 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 371 | tetris.currentPiece[m][n] = I90[m][n]; |
el14kb | 2:dc75e15229ee | 372 | } |
el14kb | 2:dc75e15229ee | 373 | } |
el14kb | 2:dc75e15229ee | 374 | } |
el14kb | 2:dc75e15229ee | 375 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 376 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 377 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 378 | tetris.currentPiece[m][n] = I180[m][n]; |
el14kb | 2:dc75e15229ee | 379 | } |
el14kb | 2:dc75e15229ee | 380 | } |
el14kb | 2:dc75e15229ee | 381 | } |
el14kb | 2:dc75e15229ee | 382 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 383 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 384 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 385 | tetris.currentPiece[m][n] = I270[m][n]; |
el14kb | 2:dc75e15229ee | 386 | } |
el14kb | 2:dc75e15229ee | 387 | } |
el14kb | 2:dc75e15229ee | 388 | } |
el14kb | 2:dc75e15229ee | 389 | } |
el14kb | 2:dc75e15229ee | 390 | |
el14kb | 2:dc75e15229ee | 391 | if(tetris.current_shape == 2) { //L |
el14kb | 2:dc75e15229ee | 392 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 393 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 394 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 395 | tetris.currentPiece[m][n] = L0[m][n]; |
el14kb | 2:dc75e15229ee | 396 | } |
el14kb | 2:dc75e15229ee | 397 | } |
el14kb | 2:dc75e15229ee | 398 | } |
el14kb | 2:dc75e15229ee | 399 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 400 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 401 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 402 | tetris.currentPiece[m][n] = L90[m][n]; |
el14kb | 2:dc75e15229ee | 403 | } |
el14kb | 2:dc75e15229ee | 404 | } |
el14kb | 2:dc75e15229ee | 405 | } |
el14kb | 2:dc75e15229ee | 406 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 407 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 408 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 409 | tetris.currentPiece[m][n] = L180[m][n]; |
el14kb | 2:dc75e15229ee | 410 | } |
el14kb | 2:dc75e15229ee | 411 | } |
el14kb | 2:dc75e15229ee | 412 | } |
el14kb | 2:dc75e15229ee | 413 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 414 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 415 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 416 | tetris.currentPiece[m][n] = L270[m][n]; |
el14kb | 2:dc75e15229ee | 417 | } |
el14kb | 2:dc75e15229ee | 418 | } |
el14kb | 2:dc75e15229ee | 419 | } |
el14kb | 2:dc75e15229ee | 420 | } |
el14kb | 2:dc75e15229ee | 421 | |
el14kb | 2:dc75e15229ee | 422 | if(tetris.current_shape == 3) { //J |
el14kb | 2:dc75e15229ee | 423 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 424 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 425 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 426 | tetris.currentPiece[m][n] = J0[m][n]; |
el14kb | 2:dc75e15229ee | 427 | } |
el14kb | 2:dc75e15229ee | 428 | } |
el14kb | 2:dc75e15229ee | 429 | } |
el14kb | 2:dc75e15229ee | 430 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 431 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 432 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 433 | tetris.currentPiece[m][n] = J90[m][n]; |
el14kb | 2:dc75e15229ee | 434 | } |
el14kb | 2:dc75e15229ee | 435 | } |
el14kb | 2:dc75e15229ee | 436 | } |
el14kb | 2:dc75e15229ee | 437 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 438 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 439 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 440 | tetris.currentPiece[m][n] = J180[m][n]; |
el14kb | 2:dc75e15229ee | 441 | } |
el14kb | 2:dc75e15229ee | 442 | } |
el14kb | 2:dc75e15229ee | 443 | } |
el14kb | 2:dc75e15229ee | 444 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 445 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 446 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 447 | tetris.currentPiece[m][n] = J270[m][n]; |
el14kb | 2:dc75e15229ee | 448 | } |
el14kb | 2:dc75e15229ee | 449 | } |
el14kb | 2:dc75e15229ee | 450 | } |
el14kb | 2:dc75e15229ee | 451 | } |
el14kb | 2:dc75e15229ee | 452 | |
el14kb | 2:dc75e15229ee | 453 | if(tetris.current_shape == 4) { //Z |
el14kb | 2:dc75e15229ee | 454 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 455 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 456 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 457 | tetris.currentPiece[m][n] = Z0[m][n]; |
el14kb | 2:dc75e15229ee | 458 | } |
el14kb | 2:dc75e15229ee | 459 | } |
el14kb | 2:dc75e15229ee | 460 | } |
el14kb | 2:dc75e15229ee | 461 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 462 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 463 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 464 | tetris.currentPiece[m][n] = Z90[m][n]; |
el14kb | 2:dc75e15229ee | 465 | } |
el14kb | 2:dc75e15229ee | 466 | } |
el14kb | 2:dc75e15229ee | 467 | } |
el14kb | 2:dc75e15229ee | 468 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 469 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 470 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 471 | tetris.currentPiece[m][n] = Z180[m][n]; |
el14kb | 2:dc75e15229ee | 472 | } |
el14kb | 2:dc75e15229ee | 473 | } |
el14kb | 2:dc75e15229ee | 474 | } |
el14kb | 2:dc75e15229ee | 475 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 476 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 477 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 478 | tetris.currentPiece[m][n] = Z270[m][n]; |
el14kb | 2:dc75e15229ee | 479 | } |
el14kb | 2:dc75e15229ee | 480 | } |
el14kb | 2:dc75e15229ee | 481 | } |
el14kb | 2:dc75e15229ee | 482 | } |
el14kb | 2:dc75e15229ee | 483 | |
el14kb | 2:dc75e15229ee | 484 | if(tetris.current_shape == 5) { //S |
el14kb | 2:dc75e15229ee | 485 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 486 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 487 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 488 | tetris.currentPiece[m][n] = S0[m][n]; |
el14kb | 2:dc75e15229ee | 489 | } |
el14kb | 2:dc75e15229ee | 490 | } |
el14kb | 2:dc75e15229ee | 491 | } |
el14kb | 2:dc75e15229ee | 492 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 493 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 494 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 495 | tetris.currentPiece[m][n] = S90[m][n]; |
el14kb | 2:dc75e15229ee | 496 | } |
el14kb | 2:dc75e15229ee | 497 | } |
el14kb | 2:dc75e15229ee | 498 | } |
el14kb | 2:dc75e15229ee | 499 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 500 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 501 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 502 | tetris.currentPiece[m][n] = S180[m][n]; |
el14kb | 2:dc75e15229ee | 503 | } |
el14kb | 2:dc75e15229ee | 504 | } |
el14kb | 2:dc75e15229ee | 505 | } |
el14kb | 2:dc75e15229ee | 506 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 507 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 508 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 509 | tetris.currentPiece[m][n] = S270[m][n]; |
el14kb | 2:dc75e15229ee | 510 | } |
el14kb | 2:dc75e15229ee | 511 | } |
el14kb | 2:dc75e15229ee | 512 | } |
el14kb | 2:dc75e15229ee | 513 | } |
el14kb | 2:dc75e15229ee | 514 | |
el14kb | 2:dc75e15229ee | 515 | if(tetris.current_shape == 6) { //T |
el14kb | 2:dc75e15229ee | 516 | if(tetris.orientation == 0) { |
el14kb | 2:dc75e15229ee | 517 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 518 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 519 | tetris.currentPiece[m][n] = T0[m][n]; |
el14kb | 2:dc75e15229ee | 520 | } |
el14kb | 2:dc75e15229ee | 521 | } |
el14kb | 2:dc75e15229ee | 522 | } |
el14kb | 2:dc75e15229ee | 523 | if(tetris.orientation == 1) { |
el14kb | 2:dc75e15229ee | 524 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 525 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 526 | tetris.currentPiece[m][n] = T90[m][n]; |
el14kb | 2:dc75e15229ee | 527 | } |
el14kb | 2:dc75e15229ee | 528 | } |
el14kb | 2:dc75e15229ee | 529 | } |
el14kb | 2:dc75e15229ee | 530 | if(tetris.orientation == 2) { |
el14kb | 2:dc75e15229ee | 531 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 532 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 533 | tetris.currentPiece[m][n] = T180[m][n]; |
el14kb | 2:dc75e15229ee | 534 | } |
el14kb | 2:dc75e15229ee | 535 | } |
el14kb | 2:dc75e15229ee | 536 | } |
el14kb | 2:dc75e15229ee | 537 | if(tetris.orientation == 3) { |
el14kb | 2:dc75e15229ee | 538 | for(int m = 0; m < 10; m++) { |
el14kb | 2:dc75e15229ee | 539 | for(int n = 0; n < 10; n++) { |
el14kb | 2:dc75e15229ee | 540 | tetris.currentPiece[m][n] = T270[m][n]; |
el14kb | 2:dc75e15229ee | 541 | } |
el14kb | 2:dc75e15229ee | 542 | } |
el14kb | 2:dc75e15229ee | 543 | } |
el14kb | 2:dc75e15229ee | 544 | } |
el14kb | 2:dc75e15229ee | 545 | } |
el14kb | 2:dc75e15229ee | 546 | } |
el14kb | 2:dc75e15229ee | 547 | bool GetcurrentState(int y,int x){ |
el14kb | 2:dc75e15229ee | 548 | |
el14kb | 2:dc75e15229ee | 549 | if (y<0||y>45||x<0||x>40) return false; |
el14kb | 2:dc75e15229ee | 550 | |
el14kb | 2:dc75e15229ee | 551 | return currentState[y][x]; |
el14kb | 2:dc75e15229ee | 552 | } |
el14kb | 2:dc75e15229ee | 553 | |
el14kb | 2:dc75e15229ee | 554 | void SetcurrentState(int y,int x,bool state){ |
el14kb | 2:dc75e15229ee | 555 | |
el14kb | 2:dc75e15229ee | 556 | if (y<0||y>45||x<0||x>40) return; |
el14kb | 2:dc75e15229ee | 557 | |
el14kb | 2:dc75e15229ee | 558 | currentState[y][x] = state; |
el14kb | 2:dc75e15229ee | 559 | } |
el14kb | 2:dc75e15229ee | 560 | void draw_piece() |
el14kb | 2:dc75e15229ee | 561 | { |
el14kb | 2:dc75e15229ee | 562 | |
el14kb | 2:dc75e15229ee | 563 | if(joy.direction == LEFT) { |
el14kb | 2:dc75e15229ee | 564 | tetris.next_xP = tetris.xP-1; |
el14kb | 2:dc75e15229ee | 565 | } else if(joy.direction == RIGHT) { |
el14kb | 2:dc75e15229ee | 566 | tetris.next_xP = tetris.xP+1; |
el14kb | 2:dc75e15229ee | 567 | } else { |
el14kb | 2:dc75e15229ee | 568 | |
el14kb | 2:dc75e15229ee | 569 | tetris.next_xP = tetris.xP; |
el14kb | 2:dc75e15229ee | 570 | |
el14kb | 2:dc75e15229ee | 571 | } |
el14kb | 2:dc75e15229ee | 572 | |
el14kb | 2:dc75e15229ee | 573 | if (tetris.next_xP+10>42) { |
el14kb | 2:dc75e15229ee | 574 | tetris.next_xP = 42-10; |
el14kb | 2:dc75e15229ee | 575 | } |
el14kb | 2:dc75e15229ee | 576 | if (tetris.next_xP<0) { |
el14kb | 2:dc75e15229ee | 577 | tetris.next_xP = 0; |
el14kb | 2:dc75e15229ee | 578 | } |
el14kb | 2:dc75e15229ee | 579 | bool piece_collided_x = false; |
el14kb | 2:dc75e15229ee | 580 | for(int y = 0; y < 10; y++) { |
el14kb | 2:dc75e15229ee | 581 | for(int x = 0; x < 10; x++) { |
el14kb | 2:dc75e15229ee | 582 | if((tetris.currentPiece[y][x] == 1) && (GetcurrentState(tetris.yP + y,tetris.next_xP + x) == 1)) { |
el14kb | 2:dc75e15229ee | 583 | piece_collided_x = true; |
el14kb | 2:dc75e15229ee | 584 | } |
el14kb | 2:dc75e15229ee | 585 | } |
el14kb | 2:dc75e15229ee | 586 | } |
el14kb | 2:dc75e15229ee | 587 | if(piece_collided_x == false) { |
el14kb | 2:dc75e15229ee | 588 | tetris.xP = tetris.next_xP; |
el14kb | 2:dc75e15229ee | 589 | } |
el14kb | 2:dc75e15229ee | 590 | tetris.next_yP = tetris.yP+1; |
el14kb | 2:dc75e15229ee | 591 | |
el14kb | 2:dc75e15229ee | 592 | bool piece_collided_y = false; |
el14kb | 2:dc75e15229ee | 593 | for(int y = 0; y < 10; y++) { |
el14kb | 2:dc75e15229ee | 594 | for(int x = 0; x < 10; x++) { |
el14kb | 2:dc75e15229ee | 595 | if((tetris.currentPiece[y][x] == 1) && (GetcurrentState(tetris.next_yP + y,tetris.xP + x) == 1)) { |
el14kb | 2:dc75e15229ee | 596 | piece_collided_y = true; |
el14kb | 2:dc75e15229ee | 597 | } |
el14kb | 2:dc75e15229ee | 598 | } |
el14kb | 2:dc75e15229ee | 599 | } |
el14kb | 2:dc75e15229ee | 600 | |
el14kb | 2:dc75e15229ee | 601 | if(piece_collided_y == false) { |
el14kb | 2:dc75e15229ee | 602 | tetris.yP = tetris.next_yP; |
el14kb | 2:dc75e15229ee | 603 | } else { |
el14kb | 2:dc75e15229ee | 604 | for(int y = 0; y < 10; y++) { |
el14kb | 2:dc75e15229ee | 605 | for(int x = 0; x < 10; x++) { |
el14kb | 2:dc75e15229ee | 606 | if((tetris.currentPiece[y][x] == 1)) { |
el14kb | 2:dc75e15229ee | 607 | SetcurrentState(tetris.yP + y,tetris.xP + x,1); |
el14kb | 2:dc75e15229ee | 608 | } |
el14kb | 2:dc75e15229ee | 609 | } |
el14kb | 2:dc75e15229ee | 610 | tetris.piece_in_play = 0; |
el14kb | 2:dc75e15229ee | 611 | } |
el14kb | 2:dc75e15229ee | 612 | } |
el14kb | 2:dc75e15229ee | 613 | |
el14kb | 2:dc75e15229ee | 614 | |
el14kb | 2:dc75e15229ee | 615 | } |
el14kb | 2:dc75e15229ee | 616 | |
el14kb | 2:dc75e15229ee | 617 | void array_checker() |
el14kb | 2:dc75e15229ee | 618 | { |
el14kb | 2:dc75e15229ee | 619 | for(int x = 0; x<40; x++) { |
el14kb | 2:dc75e15229ee | 620 | |
el14kb | 2:dc75e15229ee | 621 | if(currentState[0][x] == 1) { |
el14kb | 2:dc75e15229ee | 622 | printf("boop: %d",x); |
el14kb | 2:dc75e15229ee | 623 | tetris.game_over = 1; |
el14kb | 2:dc75e15229ee | 624 | } |
el14kb | 2:dc75e15229ee | 625 | } |
el14kb | 2:dc75e15229ee | 626 | } |
el14kb | 2:dc75e15229ee | 627 | |
el14kb | 2:dc75e15229ee | 628 | |
el14kb | 2:dc75e15229ee | 629 | void clockwise() |
el14kb | 2:dc75e15229ee | 630 | { |
el14kb | 2:dc75e15229ee | 631 | g_rotate_clock_flag = 1; |
el14kb | 2:dc75e15229ee | 632 | } |
el14kb | 2:dc75e15229ee | 633 | void anticlockwise() |
el14kb | 2:dc75e15229ee | 634 | { |
el14kb | 2:dc75e15229ee | 635 | g_rotate_anticlock_flag = 1; |
el14kb | 2:dc75e15229ee | 636 | } |
el14kb | 2:dc75e15229ee | 637 | void gameCheck_isr() |
el14kb | 2:dc75e15229ee | 638 | { |
el14kb | 2:dc75e15229ee | 639 | g_call_game_Flag = 1; |
el14kb | 2:dc75e15229ee | 640 | } |