/
snake-game.ino
42 lines (34 loc) · 966 Bytes
/
snake-game.ino
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
#include "button.h"
#include "snake.h"
#include "fruit.h"
#include "renderer.h"
CREATE_INTERRUPT_BUTTON(buttonUp, 23);
CREATE_INTERRUPT_BUTTON(buttonDown, 19);
CREATE_INTERRUPT_BUTTON(buttonLeft, 18);
CREATE_INTERRUPT_BUTTON(buttonRight, 17);
Snake snake;
Fruit fruit(&snake);
void setup() {
Serial.begin(115200);
Renderer::initialize();
}
void loop() {
if (buttonUp.isPressed()) snake.turn(UP);
if (buttonDown.isPressed()) snake.turn(DOWN);
if (buttonLeft.isPressed()) snake.turn(LEFT);
if (buttonRight.isPressed()) snake.turn(RIGHT);
bool resetFruit = false;
if(snake.nextHeadPosition() == fruit.getPosition()) {
snake.grow();
resetFruit = true;
}
snake.advance();
if(resetFruit) fruit.randomize(&snake);
Renderer::startFrame();
Renderer::renderBorder();
Renderer::renderSnake(&snake);
Renderer::renderFruit(&fruit);
if(!snake.isAlive()) Renderer::renderGameOver(&snake);
Renderer::endFrame();
delay(150);
}