#include <TinyWireM.h>
#include <Tiny4kOLED.h>
#define UP PB4
#define DOWN PB3
void setup() {
pinMode(UP, INPUT);
pinMode(DOWN, INPUT);
oled.begin(64, 32, sizeof(tiny4koled_init_64x32), tiny4koled_init_64x32r);
oled.setFont(FONT6X8);
oled.clear();
oled.on();
}
int xb = 32;
int yb = 16;
bool goup = false;
bool gole = true;
int plpos = 0;
int dolpos = 0;
void loop() {
// PLAYER'S MOVEMENT
int plposold = plpos;
if(digitalRead(UP)){
plpos--;
}
if(digitalRead(DOWN)){
plpos++;
}
int plpb1;
int plpb2;
switch(plpos){
case 0:
plpb1 = 0;
plpb2 = 7;
break;
case 1:
plpb1 = 8;
plpb2 = 15;
break;
case 2:
plpb1 = 16;
plpb2 = 23;
break;
case 3:
plpb1 = 24;
plpb2 = 31;
break;
}
// DOLBAEB'S MOVEMNETNT
int dolposold = dolpos;
if(yb >= 0 && yb <= 7){
dolpos = 0;
} else if(yb >= 8 && yb <= 15){
dolpos = 1;
} else if(yb >= 16 && yb <= 23){
dolpos = 2;
} else if(yb >= 24 && yb <= 31){
dolpos = 3;
}
int dlpb1;
int dlpb2;
switch(dolpos){
case 0:
dlpb1 = 0;
dlpb2 = 7;
break;
case 1:
dlpb1 = 8;
dlpb2 = 15;
break;
case 2:
dlpb1 = 16;
dlpb2 = 23;
break;
case 3:
dlpb1 = 24;
dlpb2 = 31;
break;
}
// BALL'S MOVEMENT
int xold = xb;
int yold = yb / 8;
if(yb % 8 == 0){
yold--;
}
if(gole){
xb--;
} else if(!gole){
xb++;
}
if(goup){
yb--;
} else if(!goup){
yb++;
}
int ybd = yb / 8;
int ybm = yb % 8;
if(ybm == 0){
ybd--;
}
if(yb == 1){
goup = false;
}
if(yb == 32){
goup = true;
}
if(xb == 2){
if(yb >= plpb1 && yb <= plpb2){
gole = false;
} else{
xb = 32;
yb = 16;
//
}
}
if(xb == 61){
if(yb >= dlpb1 && yb <= dlpb2){
gole = true;
} else{
xb = 32;
yb = 16;
digitalWrite(PB5, HIGH);
delay(10);
digitalWrite(PB5, LOW);
}
}
// GRAFICS
oled.setCursor(xb, ybd);
oled.startData();
switch(ybm){
case 1:
oled.sendData(1);
break;
case 2:
oled.sendData(2);
break;
case 3:
oled.sendData(4);
break;
case 4:
oled.sendData(8);
break;
case 5:
oled.sendData(16);
break;
case 6:
oled.sendData(32);
break;
case 7:
oled.sendData(64);
break;
case 0:
oled.sendData(128);
break;
}
oled.endData();
oled.setCursor(xold, yold);
oled.startData();
oled.sendData(0);
oled.endData();
if(plposold == plpos){
//
} else{
oled.setCursor(1, plposold);
oled.startData();
oled.sendData(0);
oled.endData();
}
oled.setCursor(1, plpos);
oled.startData();
oled.sendData(255);
oled.endData();
if(dolposold == dolpos){
//
} else{
oled.setCursor(62, dolposold);
oled.startData();
oled.sendData(0);
oled.endData();
}
oled.setCursor(62, dolpos);
oled.startData();
oled.sendData(255);
oled.endData();
delay(100);
}