void snake() {
// Переменные
start:
int snakeLength = 8;
int snakeX[128];
int snakeY[64];
int foodX = random(10,118);
int foodY = random(10,54);
int headX = 20;
int headY = 20;
for (int i=0;i<snakeLength;i++) {
snakeX[i] = headX - i;
snakeY[i] = headY;
}
int dirX = 1;
int dirY = 0;
uint32_t snakeMoveTmr;
while (true) {
tick_all();
// Чтение кнопок.
if (left.click()) {
dirX = -1;
dirY = 0;
} else if (right.click()) {
dirX = 1;
dirY = 0;
} else if (down.click()) {
dirX = 0;
dirY = 1;
} else if (up.click()) {
dirX = 0;
dirY = -1;
}
// Движение змеи.
if (millis() - snakeMoveTmr >= 200) {
snakeMoveTmr = millis();
for (int i=snakeLength;i>0;i--) {
snakeX[i] = snakeX[i-1];
snakeY[i] = snake[i-1];
}
headX += dirX;
headY += dirY;
snakeX[0] = headX;
snakeY[0] = headY;
}
// Отрисовка.
oled.clear();
for (int i=0;i<snakeLength; i++) {
oled.rect(snakeX[i], snakeY[i], snakeX[i] + 1, snakeY[i] + 1);
}
oled.update();
// Возможность выхода.
if (left.hold(1)) return;
}
}