#define set0(r,b) r &= ~(1<<b)
#define set1(r,b) r |= 1<<b
#define test(r,b) (r&(1<<b))
#include <MD_MAX72xx.h>
// display setup
#define MAX_DEVICES 1
#define CLK 13
#define DATA 11
#define CS 10
MD_MAX72XX display = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, CS, MAX_DEVICES);
// joystick setup
#define VERT A0
#define HORZ A2
// variables setup (positions,score)
int x=3;
int y=3;
int xPoint;
int yPoint;
int score;
// millis setup
unsigned long previousMillis = 0;
const long interval = 500;
void setup(){
Serial.begin(9600);
display.begin();
display.control(MD_MAX72XX::INTENSITY, MAX_INTENSITY / 2);
display.setPoint(x, y, true);
set0(DDRC,0);
set0(DDRC,2);
// generate random position for point
randomSeed(analogRead(0));
xPoint =random(8);
yPoint =random(8);
if(yPoint == y && xPoint ==x){
xPoint =random(8);
yPoint =random(8);
}
display.setPoint(xPoint, yPoint, true);
}
void loop(){
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
int vertical = analogRead(VERT);
int horizontal = analogRead(HORZ);
// movement of character
if (vertical > 512) {
display.setPoint(x, y, false);
// nasiel som tuto zaujimavu funkciu na limitovanie int,funckia vrati vacsie cislo :D
x = max(0, x - 1);
display.setPoint(x, y, true);
} else if (vertical < 512) {
display.setPoint(x, y, false);
// podobne ako pri max() ale tu fukcia vrati mensie cislo
x = min(7, x + 1);
display.setPoint(x, y, true);
}
if (horizontal > 512) {
display.setPoint(x, y, false);
y = min(7, y + 1);
display.setPoint(x, y, true);
} else if (horizontal < 512) {
display.setPoint(x, y, false);
y = max(0, y - 1);
display.setPoint(x, y, true);
}
// check for hit
if(yPoint == y && xPoint ==x){
score= score+1;
xPoint =random(8);
yPoint =random(8);
if(yPoint == y && xPoint ==x){
xPoint =random(8);
yPoint =random(8);
}
display.setPoint(xPoint, yPoint, true);
Serial.print("Zasah!!, tvoje skore je :");
Serial.print(score);
Serial.println();
}
// check for game over
if(score ==10){
Serial.println("Zvitazil si !!");
score=0;
display.setPoint(xPoint, yPoint, false);
Serial.println("Zacni hrat znova");
xPoint =random(8);
yPoint =random(8);
if(yPoint == y && xPoint ==x){
xPoint =random(8);
yPoint =random(8);
}
display.setPoint(xPoint, yPoint, true);
}
}
}