//pines de salida para formar numero de display
int pines[7] = {22, 2, 3, 4, 5, 15, 16};
//leds indicador de turno del jugador
int ledJ1=12;
int ledJ2=14;
//puntuacion de jugadores
int puntosJ1;
int puntosJ2;
boolean turno;
//estado de pines para formar cada numero 0-9
byte displaySieteSeg[10][7] = {
{1,1,1,1,1,1,0 }, //digito 0
{0,1,1,0,0,0,0 }, //digito 1
{1,1,0,1,1,0,1 }, //digito 2
{1,1,1,1,0,0,1 }, //digito 3
{0,1,1,1,0,1,1 }, //digito 4
{1,0,1,1,0,1,1 }, //digito 5
{1,0,1,1,1,1,1 }, //digito 6
{1,1,1,0,0,0,0 }, //digito 7
{1,1,1,1,1,1,1 }, //digito 8
{1,1,1,1,0,1,1 }, //digito 9
};
int numero= 0;
int boton = 13;
void setup() {
Serial.begin(115200);
pinMode(ledJ1, OUTPUT);
pinMode(ledJ2, OUTPUT);
for(int i=0; i<7; i++)
pinMode(pines [i], OUTPUT);
pinMode(boton, INPUT_PULLDOWN);
// Inicializa Display Con El Número 0
for(int i=0; i<10; i++) {
formaNumero(i);
delay(300);
}
formaNumero(0);
puntosJ1 = 0;
puntosJ2 = 0;
turno= false;
Serial.println("=== Iniciando Juego ===");
Serial.print("Puntos Del Jugador #1: ");
Serial.println(puntosJ1);
Serial.print("Puntos Del Jugador #2: ");
Serial.println(puntosJ2);
}
void loop() {
if(turno == false) {
digitalWrite(ledJ1, HIGH);
digitalWrite(ledJ2, LOW);
}
else{
digitalWrite(ledJ1, LOW);
digitalWrite(ledJ2, HIGH);
}
int estadoBoton = digitalRead(boton);
delay(300);
if (estadoBoton == HIGH) {
numero= random(1,7); //Numero Generado Aleatoriamente
formaNumero(numero);
if(turno == false) {
Serial.print("Jugador #1 Lanzo Dado: ");
Serial.println(numero);
puntosJ1 += numero;
turno = true;
}
else{
Serial.print("Jugador #2 Lanzo Dado: ");
Serial.println(numero);
puntosJ2 += numero;
turno = false;
}
Serial.print("Puntos Del Jugador #1: ");
Serial.println(puntosJ1);
Serial.print("Puntos Del Jugador #2: ");
Serial.println(puntosJ2);
delay(1000);
formaNumero(0);
if (puntosJ1 == 21){
digitalWrite(ledJ2, LOW);
Serial.println("El Jugador #1 Es El Ganador!!!");
for (int j=0; j<10; j++) {
digitalWrite(ledJ1, HIGH);
delay(200);
digitalWrite(ledJ1, LOW);
delay(200);
}
digitalWrite(ledJ1, LOW);
turno = false;
puntosJ1 = 0;
puntosJ2 = 0;
Serial.println("=== Iniciando Juego ===");
Serial.print("Puntos Del Jugador #1: ");
Serial.println(puntosJ1);
Serial.print("Puntos Del Jugador #2: ");
Serial.println(puntosJ2);
}
else if(puntosJ1 > 21){
puntosJ1 = 20 - (puntosJ1 - 21);
Serial.print("Puntos Del Jugador #1: ");
Serial.println(puntosJ1);
}
if(puntosJ2 == 21){
digitalWrite(ledJ1, LOW);
Serial.println("El Jugador #2 Es El Ganador!!!");
for(int j=0; j<10; j++){
digitalWrite(ledJ2, HIGH);
delay(200);
digitalWrite(ledJ2, LOW);
delay(200);
}
digitalWrite(ledJ2, LOW);
turno = true;
puntosJ1 = 0;
puntosJ2 = 0;
Serial.println("=== Iniciando Juego ===");
Serial.print("Puntos Del Jugador #1: ");
Serial.println(puntosJ1);
Serial.print("Puntos Del Jugador #2: ");
Serial.println(puntosJ2);
}
else if(puntosJ2 > 21){
puntosJ2 = 20 - (puntosJ2 - 21);
Serial.print("Puntos Del Jugador #2: ");
Serial.println(puntosJ2);
}
}
}
void formaNumero(int digito){
int pin=0;
for(int contadorSegmentos=0; contadorSegmentos< 7; ++contadorSegmentos){
digitalWrite(pines[pin], !displaySieteSeg[digito][contadorSegmentos]);
++pin;
}
}