aboutsummaryrefslogtreecommitdiff
path: root/Jetris.ino
blob: fb0c7e8bc7859476263bc8b22fae8fcc64b875e0 (plain)
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 */

	
}