#include "LedControl.h"
LedControl lc=LedControl(12,10,11,2);
const int SW_pin = 2;
const int xpin = 0;
const int ypin = 1;
int filas=3, col=3;
int filaini = 0; int colini = 0;
bool check = 0;
bool barcos1[7][7];
bool barcos2[7][7];
bool tablero1[7][7];
bool tablero2[7][7];
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(9600);
Serial.println("Iniciando");
lc.shutdown(0,false);
lc.shutdown(1,false);
lc.setIntensity(0,8);
lc.setIntensity(1,8);
lc.clearDisplay(0);
lc.clearDisplay(1);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
barcos1[i][j] = false;
barcos2[i][j] = false;
tablero1[i][j] = false;
tablero2[i][j] = false;
}
}
Serial.println("Jugador 1, coloca posición inicial de tu Portaaviones");
posicioninicial(barcos1);
orientacion(4,barcos1);
posicioninicial(barcos1);
orientacion(3,barcos1);
}
void loop(){
Serial.println("TILIN");
delay(500);
}
void orientacion(int longitud,bool jugador[][7]){
bool check = false; //check de si ya se coloco el barco
Serial.println("Elegir direccion con jostick");
while (check==0){
if (analogRead(xpin)>525){ //izquierda (aumentan las filas)
if ((filaini+longitud)<8){
for (int i=filaini+1,j=0; i<(filaini+longitud+1) && j==0;i++)//i es la fila, j es un check
{
bool isOn = jugador[colini][i];
if (isOn) {j=1;check = 1;}//Barco en esa posición, que se termine el loop y diga que fallo
}
if (check == 0){ // colocar barco
for (int i=filaini; i<(filaini+longitud+1);i++)//i es la fila, j es un check
{
jugador[colini][i] = true;
lc.setLed(0,colini,i,true);
}
Serial.print("Barco colocado");
check = 1;} //izquierda
else{
Serial.print("Invalido");
check = 0;
}
}
else{
Serial.println("Invalido");
check=0;
}
delay(100);
}
}
}
void posicioninicial(bool jugador[][7]) {
int check = 0;
while (check==0){
if(digitalRead(SW_pin) == 0){
bool isOn = jugador[col][filas];
if (isOn) {
Serial.println("Ya hay un barco ahi");
check=0;
}
else{
filaini=filas;
colini=col;
lc.setLed(0,colini,filaini,true);
check=1;}
}
else if(analogRead(xpin)>525 && filas<7){
lc.setLed(1,col,filas,false);
filas++;
lc.setLed(1,col,filas,true);
}
else if(analogRead(xpin)<510 && filas > 0){
lc.setLed(1,col,filas,false);
filas--;
lc.setLed(1,col,filas,true);
}
else if(analogRead(ypin)>520 && col > 0){
lc.setLed(1,col,filas,false);
col--;
lc.setLed(1,col,filas,true);
}
else if(analogRead(ypin)<500 && col < 7){
lc.setLed(1,col,filas,false);
col++;
lc.setLed(1,col,filas,true);
}
delay(100);
}
}