#include <LedControl.h>
LedControl lc = LedControl(8, 10, 9, 1); //10 is to CLOCK, 9 = CS, 8=DIN//
int UD = 0, LR = 0, BT = 0;
int BnW[8][8];
int i, j, XC, YC, Pi, Pj;
boolean flag;
void setup() {
Serial.begin(9600);
lc.shutdown(0, false);
lc.setIntensity(0, 5);
lc.clearDisplay(0);
randomSeed(analogRead(0));
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
if (i == 0 || i == 7) {
BnW[i][j] = 1;
}
else {
BnW[i][j] = 0;
}
}
}
}
void loop() {
UD = analogRead(A0);
LR = analogRead(A1);
BT = analogRead(A2);
char xdot = map(LR, 1021, 0, 7, 0); //This maps the values//
char ydot = map(UD, 1021, 0, 7, 0);
lc.setLed(0, xdot, ydot , true);
flag = true;
if (BT == 0 && BnW[xdot][ydot] == 0) {
for (i = 0; i < 8; i++) {
if (BnW[i][ydot] == 1) {
Pi = i;
break;
}
}
for (i = 7; i >= 0; i--) {
if (BnW[i][ydot] == 1) {
Pj = i;
break;
}
}
if (Pj > xdot && xdot > Pi) {
BnW[Pj][ydot] = 0;
BnW[xdot][ydot] = 1;
//ARDUINO'S TURN
flag = false;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
if (BnW[j][i] == 1) {
Pi = j;
break;
}
}
for (j = 7; j >= 0; j--) {
if (BnW[j][i] == 1) {
Pj = j;
break;
}
}
//select one row make diff one
if (Pj - Pi > 2 && BnW[Pi + 2][i] == 0) {
BnW[Pj - 2][i] = 1;
BnW[Pi][i] = 0;
flag = true;
break;
}
//close one row
if (Pj - Pi > 1 && BnW[i][Pi + 1] == 0) {
BnW[Pj - 1][i] = 1;
BnW[Pi][i] = 0;
flag = true;
break;
}
}
}
}
if (flag == false) {
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
lc.setLed(0, i, j , false);
}
}
exit(0);
}
//update 8x8 board
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
if (BnW[i][j] == 1) {
lc.setLed(0, i, j , true);
}
if (BnW[i][j] == 0) {
lc.setLed(0, i, j , false);
}
}
}
//lc.clearDisplay(0);
delay(150);
}
Comments
Please log in or sign up to comment.