Przemek Wirkus
/
MBEDtetris
Simple tetris game to show usage of C12832 LCD.
main.cpp
- Committer:
- PrzemekWirkus
- Date:
- 2014-03-17
- Revision:
- 1:cdd5880742fc
- Parent:
- 0:644f70b470b5
- Child:
- 2:da22b028cf2e
File content as of revision 1:cdd5880742fc:
#include "mbed.h" #include "C12832_lcd.h" #include "mtrix.h" MBEDtrisTheGame<char> game; C12832_LCD lcd; BusIn joy(p15,p12,p13,p16); DigitalIn fire(p14); BusOut leds(LED1,LED2,LED3,LED4); #define JOY_KEY_LEFT 1 #define JOY_KEY_RIGHT 2 #define JOY_KEY_UP 4 #define JOY_KEY_DOWN 8 #define BOUNCER_SIZE 2 int main() { // Welcome message lcd.cls(); bool KEY_LEFT = false; bool KEY_RIGHT = false; bool KEY_UP = false; bool KEY_DOWN = false; int loop = 0; while(1) { int joy_key = joy.read(); switch (joy_key) { case JOY_KEY_LEFT: { KEY_LEFT = true; break; } case JOY_KEY_RIGHT: { KEY_RIGHT = true; break; } case JOY_KEY_UP: { KEY_UP = true; break; } case JOY_KEY_DOWN: { KEY_DOWN = true; break; } } if ((loop % 10) == 0) { if (KEY_LEFT) { game.try_move_left(); break; } if (KEY_RIGHT) { game.try_move_right(); break; } if (KEY_UP) { game.try_rotate(); break; } if (KEY_DOWN) { game.move_brick_down(); break; } KEY_LEFT = false; KEY_RIGHT = false; KEY_UP = false; KEY_DOWN = false; // PRINT MATRIX for (int x = 0; x < LCD_W; x++) { for (int y = 0; y < LCD_H; y++) { // This should be replaces with just 'putpixel on LCD' int draw_pix_x = x*BOUNCER_SIZE; int draw_pix_y = y*BOUNCER_SIZE; if (game.get_matrix_cell(x, y)) { //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1); lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 1); } else { //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 0); lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 0); } } } // PRINT BRICK for (int x = 0; x < BRICK_SIZE_X; x++) { for (int y = 0; y < BRICK_SIZE_Y; y++) { if (game.get_brick_cell(x, y)) { std::pair<int, int> brick_pos = game.get_brick_pos(); int draw_pix_x = (brick_pos.first + x) * BOUNCER_SIZE; int draw_pix_y = (brick_pos.second + y) * BOUNCER_SIZE; //lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1); lcd.rect(draw_pix_y, draw_pix_x, draw_pix_y+BOUNCER_SIZE-1, draw_pix_x+BOUNCER_SIZE-1, 1); } } } lcd.copy_to_lcd(); game.move_brick_down(); } wait(0.01); loop++; } }