#include "GameBoy.h"
GameBoy gb;
byte t_block[4][4] = {
{1,1,1,0},
{0,1,0,0},
{0,0,0,0},
{0,0,0,0}
};
byte o_block[4][4] = {
{1,1,0,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
};
byte i_block[4][4] = {
{0,1,0,0},
{0,1,0,0},
{0,1,0,0},
{0,1,0,0}
};
byte z_block[4][4] = {
{0,1,1,0},
{1,1,0,0},
{0,0,0,0},
{0,0,0,0}
};
byte l_block[4][4] = {
{0,1,0,0},
{0,1,0,0},
{0,1,1,0},
{0,0,0,0}
};
byte (*blocks[5])[4] = { t_block, o_block, i_block, z_block, l_block };
byte block[4][4]={0};
int x=0, y=0;
void blockRandom(){
y=-3; x=random(3) +2;
int type = random(5);
for(int i=0; i<4; i++) for(int j=0; j<4; j++)
block[i][j] = blocks[type][i][j];
}
void blockDraw(){
for(int i=0; i<4; i++) for(int j=0; j<4; j++)
if(block[i][j]) gb.drawPoint(x+j,y+i);
}
void setup() {
gb.begin(0);
randomSeed(analogRead(A5));
blockRandom();
delay(1000);
}
bool collison(){
return gb.checkBlockCollision(block, x, y);
}
void loop() {
delay(200 - (gb.getKey()==6)*190); gb.drawDisplay();
blockDraw();
y++;
if(y>1 and collison()){
gb.memBlock(block, x, y);
blockRandom();
}
if(y==1 and collison()){
gb.restart();
gb.sound(1);
}
if(gb.fullLine()){
gb.sound(2);
}
if(gb.getKey()==5){ x++; if(collison()) x--; } // вправо
if(gb.getKey()==4){ x--; if(collison()) x++; }// вліво
}