#include "MD_MAXPanel.h"
const MD_MAX72XX::moduleType_t HARDWARE_TYPE = MD_MAX72XX::PAROLA_HW;
MD_MAXPanel matrix = MD_MAXPanel(HARDWARE_TYPE, 11, 12, 10, 4, 1);
int X[64]; int Y[64];
int n=1; int xa,ya; /*ябл*/ int d=0;
int newA() { xa=random(31); ya=random(7); }
void setup() { Serial.begin(9600); matrix.begin(); newA(); X[0]=0; Y[0]=0; } //нач.полож змеи
unsigned long Time, Time1=0; int i, x, y;
void loop() {
x = analogRead(A1); y = analogRead(A0);
if (y < 100) d=0; //вниз (по увеличению Y)
if (y > 900) d=1; //вверх (по уменьшению Y)
if (x < 100) d=2; //влево (по увеличению Х)
if (x > 900) d=3; //вправо (по уменьшению Х) // Serial.println(x);
Time = millis();
if(Time-Time1>200)
{ Time1 = Time;
if(Y[0]==ya && X[0]==xa) { n++; newA(); }
for(i=n-1; i>0; i--) { //сдвиг координат хвоста, с уменьшением индекса массива
Y[i]=Y[i-1]; X[i]=X[i-1]; }
if(d==0) Y[0]=(Y[0]+1)%8; // остаток от дел на 8
if(d==1) Y[0]=(Y[0]+7)%8; // Serial.println(Y[0]);
if(d==2) X[0]=(X[0]+31)%32;
if(d==3) X[0]=(X[0]+1)%32;
for(i=n-1; i>=1; i--)
if(X[0]==X[i] && Y[0]==Y[i]) { n=1; Serial.println("YKYC XBOCTA"); }
matrix.clear();
for(i=0; i<n; i++) matrix.setPoint(X[i], Y[i], true); //змея
matrix.setPoint(xa, ya, true); //яблоко
} }