1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#include "drawing.h"
#include "sprites.h"
void setup() {
Serial.begin(115200);
Serial.println("Starting \n\n");
/* Prepare the random generator */
randomSeed( analogRead(0) );
/* Init pins */
pinMode(cs, OUTPUT);
pinMode(clk, OUTPUT);
pinMode(dataIn, OUTPUT);
pinMode(leftPin, INPUT_PULLUP);
pinMode(rightPin, INPUT_PULLUP);
pinMode(dropPin, INPUT_PULLUP);
pinMode(rotatePin, INPUT_PULLUP);
initDisplays(0);
initDisplays(1);
initSprites();
initGame();
}
void loop() {
gameLoop();
}
/*
* GAME LOGIC
*/
struct Sprite *cur_block;
int x_pos, y_pos;
void initGame() {
initBlock();
}
void gameLoop() {
static long loop_time;
handleButtons();
if( millis() - loop_time < 500)
return;
/* Move the block */
if( checkCollision(0, 1) ){
drawSprite(buttonLayer, xPos, yPos, cur_block);
/* Handle the rows, from the top */
handleFullRows(0);
renderAll();
}else {
/* Free to move (one down)*/
moveBlock(0, 1);
}
loop_time = millis();
}
void initBlock() {
xPos = yPos = 0;
block = blocks[ random(7) ];
}
void moveBlock(int x_move, int y_move) {
x_pos += x_move;
y_pos += y_move;
/* Redraw ball */
}
|