#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
uint8_t vrag[8]
{
0b00000,
0b01110,
0b10001,
0b10101,
0b10001,
0b01110,
0b00000,
0b00000
};
uint8_t igroc1[8]
{
0b00000,
0b11111,
0b10101,
0b11011,
0b10101,
0b11111,
0b00000,
0b00000
};
uint8_t igroc2[8]
{
0b00000,
0b00100,
0b01010,
0b10101,
0b01010,
0b00100,
0b00000,
0b00000
};
uint8_t eda[8]
{
0b00000,
0b01110,
0b11111,
0b11011,
0b11111,
0b01110,
0b00000,
0b00000
};
int xv1 = 9;
int yv1 = 1;
int nv1 = 0;
int tv1 = 0;
int ctv1;
int xv2 = 9;
int yv2 = 1;
int nv2 = 0;
int tv2 = 0;
int ctv2;
int xv3 = 9;
int yv3 = 1;
int nv3 = 0;
int tv3 = 0;
int ctv3;
int xi1 = 0;
int yi1 = 0;
int xi2 = 19;
int yi2 = 3;
int xe = 10;
int ye = 2;
int ce1 = 0;
int ce2 = 0;
int v = 0;
void setup()
{
randomSeed(analogRead(A4));
lcd.init();
lcd.backlight();
lcd.createChar(1, vrag);
lcd.createChar(2, igroc1);
lcd.createChar(3, igroc2);
lcd.createChar(4, eda);
}
void loop()
{
ctv1 = random(0, 2);
if(tv1 == ctv1)
{
tv1 = 0;
nv1 = random(0, 5);
}
lcd.setCursor(xv1, yv1);
lcd.print(" ");
if(nv1 == 1 && yv1 != 0){yv1--;}
if(nv1 == 2 && xv1 != 0){xv1--;}
if(nv1 == 3 && xv1 != 19){xv1++;}
if(nv1 == 4 && yv1 != 3){yv1++;}
lcd.setCursor(xv1, yv1);
lcd.print("\x01");
ctv2 = random(0, 2);
if(tv2 == ctv2)
{
tv2 = 0;
nv2 = random(0, 5);
}
lcd.setCursor(xv2, yv2);
lcd.print(" ");
if(nv2 == 1 && yv2 != 0){yv2--;}
if(nv2 == 2 && xv2 != 0){xv2--;}
if(nv2 == 3 && xv2 != 19){xv2++;}
if(nv2 == 4 && yv2 != 3){yv2++;}
lcd.setCursor(xv2, yv2);
lcd.print("\x01");
lcd.setCursor(xe, ye);
lcd.print(" ");
if(xe == xi1 && ye == yi1)
{
xe = random(0, 19);
ye = random(0, 3);
ce1++;
}
if(xe == xi2 && ye == yi2)
{
xe = random(0, 19);
ye = random(0, 3);
ce2++;
}
lcd.setCursor(xe, ye);
lcd.print("\x04");
ctv3 = random(0, 2);
if(tv3 == ctv3)
{
tv3 = 0;
nv3 = random(0, 5);
}
lcd.setCursor(xv3, yv3);
lcd.print(" ");
if(nv3 == 1 && yv3 != 0){yv3--;}
if(nv3 == 2 && xv3 != 0){xv3--;}
if(nv3 == 3 && xv3 != 19){xv3++;}
if(nv3 == 4 && yv3 != 3){yv3++;}
lcd.setCursor(xv3, yv3);
lcd.print("\x01");
lcd.setCursor(xi1, yi1);
lcd.print(" ");
if(analogRead(A0) == 1023 && yi1 != 0){yi1--;}
if(analogRead(A0) == 0 && yi1 != 3){yi1++;}
if(analogRead(A1) == 1023 && xi1 != 0){xi1--;}
if(analogRead(A1) == 0 && xi1 != 19){xi1++;}
lcd.setCursor(xi1, yi1);
lcd.print("\x02");
lcd.setCursor(xi2, yi2);
lcd.print(" ");
if(analogRead(A2) == 1023 && yi2 != 0){yi2--;}
if(analogRead(A2) == 0 && yi2 != 3){yi2++;}
if(analogRead(A3) == 1023 && xi2 != 0){xi2--;}
if(analogRead(A3) == 0 && xi2 != 19){xi2++;}
lcd.setCursor(xi2, yi2);
lcd.print("\x03");
if((xi1 == xv1 && yi1 == yv1) || (xi1 == xv2 && yi1 == yv2) || (xi1 == xv2 && yi1 == yv2)){v = 2;}
if((xi2 == xv1 && yi2 == yv1) || (xi2 == xv2 && yi2 == yv2) || (xi2 == xv2 && yi2 == yv2)){v = 1;}
if(ce1 == 3){v = 1;}
if(ce2 == 3){v = 2;}
if(v == 1)
{
for(int x = 0;x < 20;x++)
{
for(int y = 0;y < 4;y++)
{
lcd.setCursor(x, y);
lcd.print("\x02");
}
}
while(1){}
}
if(v == 2)
{
for(int x = 0;x < 20;x++)
{
for(int y = 0;y < 4;y++)
{
lcd.setCursor(x, y);
lcd.print("\x03");
}
}
while(1){}
}
delay(63);
}