Przemek Wirkus
/
MBEDtetris
Simple tetris game to show usage of C12832 LCD.
main.cpp@1:cdd5880742fc, 2014-03-17 (annotated)
- Committer:
- PrzemekWirkus
- Date:
- Mon Mar 17 20:16:32 2014 +0000
- Revision:
- 1:cdd5880742fc
- Parent:
- 0:644f70b470b5
- Child:
- 2:da22b028cf2e
Added game lopp (still not working well);
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
PrzemekWirkus | 0:644f70b470b5 | 1 | #include "mbed.h" |
PrzemekWirkus | 0:644f70b470b5 | 2 | #include "C12832_lcd.h" |
PrzemekWirkus | 0:644f70b470b5 | 3 | #include "mtrix.h" |
PrzemekWirkus | 0:644f70b470b5 | 4 | |
PrzemekWirkus | 0:644f70b470b5 | 5 | MBEDtrisTheGame<char> game; |
PrzemekWirkus | 0:644f70b470b5 | 6 | |
PrzemekWirkus | 0:644f70b470b5 | 7 | C12832_LCD lcd; |
PrzemekWirkus | 0:644f70b470b5 | 8 | BusIn joy(p15,p12,p13,p16); |
PrzemekWirkus | 0:644f70b470b5 | 9 | DigitalIn fire(p14); |
PrzemekWirkus | 0:644f70b470b5 | 10 | BusOut leds(LED1,LED2,LED3,LED4); |
PrzemekWirkus | 0:644f70b470b5 | 11 | |
PrzemekWirkus | 1:cdd5880742fc | 12 | #define JOY_KEY_LEFT 1 |
PrzemekWirkus | 1:cdd5880742fc | 13 | #define JOY_KEY_RIGHT 2 |
PrzemekWirkus | 1:cdd5880742fc | 14 | #define JOY_KEY_UP 4 |
PrzemekWirkus | 1:cdd5880742fc | 15 | #define JOY_KEY_DOWN 8 |
PrzemekWirkus | 0:644f70b470b5 | 16 | |
PrzemekWirkus | 0:644f70b470b5 | 17 | #define BOUNCER_SIZE 2 |
PrzemekWirkus | 0:644f70b470b5 | 18 | |
PrzemekWirkus | 0:644f70b470b5 | 19 | int main() |
PrzemekWirkus | 0:644f70b470b5 | 20 | { |
PrzemekWirkus | 0:644f70b470b5 | 21 | // Welcome message |
PrzemekWirkus | 0:644f70b470b5 | 22 | lcd.cls(); |
PrzemekWirkus | 1:cdd5880742fc | 23 | |
PrzemekWirkus | 1:cdd5880742fc | 24 | bool KEY_LEFT = false; |
PrzemekWirkus | 1:cdd5880742fc | 25 | bool KEY_RIGHT = false; |
PrzemekWirkus | 1:cdd5880742fc | 26 | bool KEY_UP = false; |
PrzemekWirkus | 1:cdd5880742fc | 27 | bool KEY_DOWN = false; |
PrzemekWirkus | 0:644f70b470b5 | 28 | |
PrzemekWirkus | 1:cdd5880742fc | 29 | int loop = 0; |
PrzemekWirkus | 0:644f70b470b5 | 30 | while(1) { |
PrzemekWirkus | 0:644f70b470b5 | 31 | int joy_key = joy.read(); |
PrzemekWirkus | 0:644f70b470b5 | 32 | switch (joy_key) { |
PrzemekWirkus | 1:cdd5880742fc | 33 | case JOY_KEY_LEFT: { KEY_LEFT = true; break; } |
PrzemekWirkus | 1:cdd5880742fc | 34 | case JOY_KEY_RIGHT: { KEY_RIGHT = true; break; } |
PrzemekWirkus | 1:cdd5880742fc | 35 | case JOY_KEY_UP: { KEY_UP = true; break; } |
PrzemekWirkus | 1:cdd5880742fc | 36 | case JOY_KEY_DOWN: { KEY_DOWN = true; break; } |
PrzemekWirkus | 0:644f70b470b5 | 37 | } |
PrzemekWirkus | 0:644f70b470b5 | 38 | |
PrzemekWirkus | 1:cdd5880742fc | 39 | if ((loop % 10) == 0) |
PrzemekWirkus | 1:cdd5880742fc | 40 | { |
PrzemekWirkus | 1:cdd5880742fc | 41 | if (KEY_LEFT) { game.try_move_left(); break; } |
PrzemekWirkus | 1:cdd5880742fc | 42 | if (KEY_RIGHT) { game.try_move_right(); break; } |
PrzemekWirkus | 1:cdd5880742fc | 43 | if (KEY_UP) { game.try_rotate(); break; } |
PrzemekWirkus | 1:cdd5880742fc | 44 | if (KEY_DOWN) { game.move_brick_down(); break; } |
PrzemekWirkus | 1:cdd5880742fc | 45 | |
PrzemekWirkus | 1:cdd5880742fc | 46 | KEY_LEFT = false; |
PrzemekWirkus | 1:cdd5880742fc | 47 | KEY_RIGHT = false; |
PrzemekWirkus | 1:cdd5880742fc | 48 | KEY_UP = false; |
PrzemekWirkus | 1:cdd5880742fc | 49 | KEY_DOWN = false; |
PrzemekWirkus | 1:cdd5880742fc | 50 | |
PrzemekWirkus | 1:cdd5880742fc | 51 | // PRINT MATRIX |
PrzemekWirkus | 1:cdd5880742fc | 52 | for (int x = 0; x < LCD_W; x++) |
PrzemekWirkus | 1:cdd5880742fc | 53 | { |
PrzemekWirkus | 1:cdd5880742fc | 54 | for (int y = 0; y < LCD_H; y++) |
PrzemekWirkus | 1:cdd5880742fc | 55 | { |
PrzemekWirkus | 1:cdd5880742fc | 56 | // This should be replaces with just 'putpixel on LCD' |
PrzemekWirkus | 1:cdd5880742fc | 57 | int draw_pix_x = x*BOUNCER_SIZE; |
PrzemekWirkus | 1:cdd5880742fc | 58 | int draw_pix_y = y*BOUNCER_SIZE; |
PrzemekWirkus | 1:cdd5880742fc | 59 | |
PrzemekWirkus | 1:cdd5880742fc | 60 | if (game.get_matrix_cell(x, y)) |
PrzemekWirkus | 1:cdd5880742fc | 61 | { |
PrzemekWirkus | 1:cdd5880742fc | 62 | //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1); |
PrzemekWirkus | 1:cdd5880742fc | 63 | lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 1); |
PrzemekWirkus | 1:cdd5880742fc | 64 | } |
PrzemekWirkus | 1:cdd5880742fc | 65 | else |
PrzemekWirkus | 1:cdd5880742fc | 66 | { |
PrzemekWirkus | 1:cdd5880742fc | 67 | //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 0); |
PrzemekWirkus | 1:cdd5880742fc | 68 | lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 0); |
PrzemekWirkus | 1:cdd5880742fc | 69 | } |
PrzemekWirkus | 0:644f70b470b5 | 70 | } |
PrzemekWirkus | 0:644f70b470b5 | 71 | } |
PrzemekWirkus | 1:cdd5880742fc | 72 | |
PrzemekWirkus | 1:cdd5880742fc | 73 | // PRINT BRICK |
PrzemekWirkus | 1:cdd5880742fc | 74 | for (int x = 0; x < BRICK_SIZE_X; x++) |
PrzemekWirkus | 0:644f70b470b5 | 75 | { |
PrzemekWirkus | 1:cdd5880742fc | 76 | for (int y = 0; y < BRICK_SIZE_Y; y++) |
PrzemekWirkus | 0:644f70b470b5 | 77 | { |
PrzemekWirkus | 1:cdd5880742fc | 78 | if (game.get_brick_cell(x, y)) |
PrzemekWirkus | 1:cdd5880742fc | 79 | { |
PrzemekWirkus | 1:cdd5880742fc | 80 | std::pair<int, int> brick_pos = game.get_brick_pos(); |
PrzemekWirkus | 1:cdd5880742fc | 81 | |
PrzemekWirkus | 1:cdd5880742fc | 82 | int draw_pix_x = (brick_pos.first + x) * BOUNCER_SIZE; |
PrzemekWirkus | 1:cdd5880742fc | 83 | int draw_pix_y = (brick_pos.second + y) * BOUNCER_SIZE; |
PrzemekWirkus | 1:cdd5880742fc | 84 | //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1); |
PrzemekWirkus | 1:cdd5880742fc | 85 | lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 1); |
PrzemekWirkus | 1:cdd5880742fc | 86 | } |
PrzemekWirkus | 0:644f70b470b5 | 87 | } |
PrzemekWirkus | 0:644f70b470b5 | 88 | } |
PrzemekWirkus | 1:cdd5880742fc | 89 | |
PrzemekWirkus | 1:cdd5880742fc | 90 | |
PrzemekWirkus | 1:cdd5880742fc | 91 | lcd.copy_to_lcd(); |
PrzemekWirkus | 1:cdd5880742fc | 92 | game.move_brick_down(); |
PrzemekWirkus | 0:644f70b470b5 | 93 | } |
PrzemekWirkus | 1:cdd5880742fc | 94 | wait(0.01); |
PrzemekWirkus | 1:cdd5880742fc | 95 | loop++; |
PrzemekWirkus | 0:644f70b470b5 | 96 | } |
PrzemekWirkus | 0:644f70b470b5 | 97 | } |