All there but errors need fixing

Dependencies:   mbed

Overview:

Rookie Tetris is a jigsaw style game based on the classic Tetris.

A block will appear at the top of the screen, you must move it (your options for movement are left, right and down - you cannot move up the board). The block will stop when it if placed either on the floor of the board or on-top of another block.

Your goal is to fill a complete row of the board with the blocks; when you do so the row will delete and the pattern above it will drop down. The game is over when your pattern is tall enough to reach to the top of the board!

Controls:

Use the joystick to move your block! Your block cannot move out of the parameters of the board.

Pot 2 controls the contrast of the screen.

Committer:
el18rs
Date:
Sun May 24 11:18:33 2020 +0000
Revision:
3:522c6f850e91
Child:
4:7ddd287a5d28
Game engine added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el18rs 3:522c6f850e91 1 #include "Tetromino.h"
el18rs 3:522c6f850e91 2
el18rs 3:522c6f850e91 3 const int ISprite[4][4] = {
el18rs 3:522c6f850e91 4 {0,0,1,0,},
el18rs 3:522c6f850e91 5 {0,0,1,0,},
el18rs 3:522c6f850e91 6 {0,0,1,0,},
el18rs 3:522c6f850e91 7 {0,0,1,0,},
el18rs 3:522c6f850e91 8 };
el18rs 3:522c6f850e91 9
el18rs 3:522c6f850e91 10 const int L0Sprite[4][4] = {
el18rs 3:522c6f850e91 11 {0,1,0,0,},
el18rs 3:522c6f850e91 12 {0,1,0,0,},
el18rs 3:522c6f850e91 13 {0,1,1,0,},
el18rs 3:522c6f850e91 14 {0,0,0,0,},
el18rs 3:522c6f850e91 15 };
el18rs 3:522c6f850e91 16
el18rs 3:522c6f850e91 17 const int Z0Sprite[4][4] = {
el18rs 3:522c6f850e91 18 {0,1,0,0,},
el18rs 3:522c6f850e91 19 {0,1,1,0,},
el18rs 3:522c6f850e91 20 {0,0,1,0,},
el18rs 3:522c6f850e91 21 {0,0,0,0,},
el18rs 3:522c6f850e91 22 };
el18rs 3:522c6f850e91 23
el18rs 3:522c6f850e91 24 const int OSprite[4][4] = {
el18rs 3:522c6f850e91 25 {0,0,0,0,},
el18rs 3:522c6f850e91 26 {0,1,1,0,},
el18rs 3:522c6f850e91 27 {0,1,1,0,},
el18rs 3:522c6f850e91 28 {0,0,0,0,},
el18rs 3:522c6f850e91 29 };
el18rs 3:522c6f850e91 30
el18rs 3:522c6f850e91 31 const int TSprite[4][4] = {
el18rs 3:522c6f850e91 32 {0,1,0,0,},
el18rs 3:522c6f850e91 33 {0,1,1,0,},
el18rs 3:522c6f850e91 34 {0,1,0,0,},
el18rs 3:522c6f850e91 35 {0,0,0,0,},
el18rs 3:522c6f850e91 36 };
el18rs 3:522c6f850e91 37
el18rs 3:522c6f850e91 38 const int L1Sprite[4][4] = {
el18rs 3:522c6f850e91 39 {0,0,1,0,},
el18rs 3:522c6f850e91 40 {0,0,1,0,},
el18rs 3:522c6f850e91 41 {0,1,1,0,},
el18rs 3:522c6f850e91 42 {0,0,0,0,},
el18rs 3:522c6f850e91 43 };
el18rs 3:522c6f850e91 44
el18rs 3:522c6f850e91 45 const int Z1Sprite[4][4] = {
el18rs 3:522c6f850e91 46 {0,0,1,0,},
el18rs 3:522c6f850e91 47 {0,1,1,0,},
el18rs 3:522c6f850e91 48 {0,1,0,0,},
el18rs 3:522c6f850e91 49 {0,0,0,0,},
el18rs 3:522c6f850e91 50 };
el18rs 3:522c6f850e91 51
el18rs 3:522c6f850e91 52 Tetromino::Tetromino()
el18rs 3:522c6f850e91 53 {
el18rs 3:522c6f850e91 54
el18rs 3:522c6f850e91 55 }
el18rs 3:522c6f850e91 56
el18rs 3:522c6f850e91 57 Tetromino::~Tetromino()
el18rs 3:522c6f850e91 58 {
el18rs 3:522c6f850e91 59
el18rs 3:522c6f850e91 60 }
el18rs 3:522c6f850e91 61
el18rs 3:522c6f850e91 62 void Tetromino::init(int x, int height, int width)
el18rs 3:522c6f850e91 63 {
el18rs 3:522c6f850e91 64 _x = x;
el18rs 3:522c6f850e91 65 _y = HEIGHT/2 - height/2;
el18rs 3:522c6f850e91 66 _height = height;
el18rs 3:522c6f850e91 67 _width = width;
el18rs 3:522c6f850e91 68 _speed = 1;
el18rs 3:522c6f850e91 69
el18rs 3:522c6f850e91 70 }
el18rs 3:522c6f850e91 71
el18rs 3:522c6f850e91 72
el18rs 3:522c6f850e91 73
el18rs 3:522c6f850e91 74 void Tetromino::draw(N5110 &lcd, int x)
el18rs 3:522c6f850e91 75 {
el18rs 3:522c6f850e91 76 int shape = rand() % 6;
el18rs 3:522c6f850e91 77
el18rs 3:522c6f850e91 78 if (shape == 0) {
el18rs 3:522c6f850e91 79 lcd.drawSprite(_x, _y, 4, 4, (int*)ISprite); /*_shape_type = 0;*/
el18rs 3:522c6f850e91 80 } else if (shape == 1) {
el18rs 3:522c6f850e91 81 lcd.drawSprite(_x, _y, 4, 4, (int*)L0Sprite); /*_shape_type = 1;*/
el18rs 3:522c6f850e91 82 } else if (shape == 2) {
el18rs 3:522c6f850e91 83 lcd.drawSprite(_x, _y, 4, 4, (int*)Z0Sprite); /*_shape_type = 2;*/
el18rs 3:522c6f850e91 84 } else if (shape == 3) {
el18rs 3:522c6f850e91 85 lcd.drawSprite(_x, _y, 4, 4, (int*)OSprite); /*_shape_type = 3;*/
el18rs 3:522c6f850e91 86 } else if (shape == 4) {
el18rs 3:522c6f850e91 87 lcd.drawSprite(_x, _y, 4, 4, (int*)TSprite); /*_shape_type = 4;*/
el18rs 3:522c6f850e91 88 } else if (shape == 5) {
el18rs 3:522c6f850e91 89 lcd.drawSprite(_x, _y, 4, 4, (int*)L1Sprite); /*_shape_type = 5;*/
el18rs 3:522c6f850e91 90 } else if (shape == 6) {
el18rs 3:522c6f850e91 91 lcd.drawSprite(_x, _y, 4, 4, (int*)Z1Sprite); /*_shape_type = 6;*/
el18rs 3:522c6f850e91 92 }
el18rs 3:522c6f850e91 93 // return _shape_type;
el18rs 3:522c6f850e91 94 }
el18rs 3:522c6f850e91 95
el18rs 3:522c6f850e91 96
el18rs 3:522c6f850e91 97
el18rs 3:522c6f850e91 98
el18rs 3:522c6f850e91 99
el18rs 3:522c6f850e91 100 void Tetromino::update(Direction d, float mag)
el18rs 3:522c6f850e91 101 {
el18rs 3:522c6f850e91 102 _speed = int(mag*10.0f);
el18rs 3:522c6f850e91 103
el18rs 3:522c6f850e91 104 if (d == CENTRE) {
el18rs 3:522c6f850e91 105 _y+=_speed;
el18rs 3:522c6f850e91 106 } else if (d == S) {
el18rs 3:522c6f850e91 107 _y+=_speed*2;
el18rs 3:522c6f850e91 108 } else if (d == E) {
el18rs 3:522c6f850e91 109 _x+=_speed;
el18rs 3:522c6f850e91 110 } else if (d == W) {
el18rs 3:522c6f850e91 111 _x-=_speed;
el18rs 3:522c6f850e91 112 }
el18rs 3:522c6f850e91 113
el18rs 3:522c6f850e91 114 if (_x < 1) {
el18rs 3:522c6f850e91 115 _x = 1;
el18rs 3:522c6f850e91 116 }
el18rs 3:522c6f850e91 117 if (_x > WIDTH - _width - 1) {
el18rs 3:522c6f850e91 118 _x = WIDTH - _width - 1;
el18rs 3:522c6f850e91 119 }
el18rs 3:522c6f850e91 120 }
el18rs 3:522c6f850e91 121 Vector2D Tetromino::get_pos() {
el18rs 3:522c6f850e91 122 Vector2D p = {_x,_y};
el18rs 3:522c6f850e91 123 return p;
el18rs 3:522c6f850e91 124 }