Simple tetris game to show usage of C12832 LCD.

Dependencies:   C12832_lcd mbed

Committer:
PrzemekWirkus
Date:
Mon Mar 17 19:47:49 2014 +0000
Revision:
0:644f70b470b5
Child:
1:cdd5880742fc
First draft, game loop is still poor.

Who changed what in which revision?

UserRevisionLine numberNew 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 0:644f70b470b5 12 #define KEY_LEFT 2
PrzemekWirkus 0:644f70b470b5 13 #define KEY_RIGHT 1
PrzemekWirkus 0:644f70b470b5 14 #define KEY_UP 4
PrzemekWirkus 0:644f70b470b5 15 #define 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 0:644f70b470b5 23
PrzemekWirkus 0:644f70b470b5 24 while(1) {
PrzemekWirkus 0:644f70b470b5 25 int joy_key = joy.read();
PrzemekWirkus 0:644f70b470b5 26 switch (joy_key) {
PrzemekWirkus 0:644f70b470b5 27 case KEY_LEFT: { game.try_rotate(); break; }
PrzemekWirkus 0:644f70b470b5 28 case KEY_RIGHT: { game.try_move_right(); break; }
PrzemekWirkus 0:644f70b470b5 29 case KEY_UP: { game.try_rotate(); break; }
PrzemekWirkus 0:644f70b470b5 30 case KEY_DOWN: { game.move_brick_down(); break; }
PrzemekWirkus 0:644f70b470b5 31 }
PrzemekWirkus 0:644f70b470b5 32
PrzemekWirkus 0:644f70b470b5 33 // PRINT MATRIX
PrzemekWirkus 0:644f70b470b5 34 for (int x = 0; x < LCD_W; x++)
PrzemekWirkus 0:644f70b470b5 35 {
PrzemekWirkus 0:644f70b470b5 36 for (int y = 0; y < LCD_H; y++)
PrzemekWirkus 0:644f70b470b5 37 {
PrzemekWirkus 0:644f70b470b5 38 // This should be replaces with just 'putpixel on LCD'
PrzemekWirkus 0:644f70b470b5 39 int draw_pix_x = x*BOUNCER_SIZE;
PrzemekWirkus 0:644f70b470b5 40 int draw_pix_y = y*BOUNCER_SIZE;
PrzemekWirkus 0:644f70b470b5 41
PrzemekWirkus 0:644f70b470b5 42 if (game.get_matrix_cell(x, y))
PrzemekWirkus 0:644f70b470b5 43 {
PrzemekWirkus 0:644f70b470b5 44 lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1);
PrzemekWirkus 0:644f70b470b5 45 }
PrzemekWirkus 0:644f70b470b5 46 else
PrzemekWirkus 0:644f70b470b5 47 {
PrzemekWirkus 0:644f70b470b5 48 lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 0);
PrzemekWirkus 0:644f70b470b5 49 }
PrzemekWirkus 0:644f70b470b5 50 }
PrzemekWirkus 0:644f70b470b5 51 }
PrzemekWirkus 0:644f70b470b5 52
PrzemekWirkus 0:644f70b470b5 53 // PRINT BRICK
PrzemekWirkus 0:644f70b470b5 54 for (int x = 0; x < BRICK_SIZE_X; x++)
PrzemekWirkus 0:644f70b470b5 55 {
PrzemekWirkus 0:644f70b470b5 56 for (int y = 0; y < BRICK_SIZE_Y; y++)
PrzemekWirkus 0:644f70b470b5 57 {
PrzemekWirkus 0:644f70b470b5 58 if (game.get_brick_cell(x, y))
PrzemekWirkus 0:644f70b470b5 59 {
PrzemekWirkus 0:644f70b470b5 60 std::pair<int, int> brick_pos = game.get_brick_pos();
PrzemekWirkus 0:644f70b470b5 61
PrzemekWirkus 0:644f70b470b5 62 int draw_pix_x = (brick_pos.first + x) * BOUNCER_SIZE;
PrzemekWirkus 0:644f70b470b5 63 int draw_pix_y = (brick_pos.second + y) * BOUNCER_SIZE;
PrzemekWirkus 0:644f70b470b5 64 lcd.rect(draw_pix_x, draw_pix_y, draw_pix_x+BOUNCER_SIZE-1, draw_pix_y+BOUNCER_SIZE-1, 1);
PrzemekWirkus 0:644f70b470b5 65 }
PrzemekWirkus 0:644f70b470b5 66 }
PrzemekWirkus 0:644f70b470b5 67 }
PrzemekWirkus 0:644f70b470b5 68
PrzemekWirkus 0:644f70b470b5 69
PrzemekWirkus 0:644f70b470b5 70 lcd.copy_to_lcd();
PrzemekWirkus 0:644f70b470b5 71 wait(1.0);
PrzemekWirkus 0:644f70b470b5 72 game.move_brick_down();
PrzemekWirkus 0:644f70b470b5 73 }
PrzemekWirkus 0:644f70b470b5 74 }