Juego de parejas con Keypad - Frutas
Este código asigna una fruta diferente a cada tecla del teclado 4x4 y utiliza la misma lógica de emparejamiento para verificar si el jugador ha encontrado un par.
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char firstKey = '\0';
bool waitingForSecondKey = false;
bool waitingForSecondKey = false;
// Arreglo de frutas para emparejar
char fruits[] = {'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T'};
char firstFruit = '\0';
char secondFruit = '\0';
char fruits[] = {'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T'};
char firstFruit = '\0';
char secondFruit = '\0';
void setup() {
Serial.begin(9600);
}
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key != '\0') {
if (!waitingForSecondKey) {
firstKey = key;
firstFruit = getFruitForKey(firstKey);
Serial.println("Primera fruta: " + getFruitName(firstFruit)); // Muestra la primera fruta
waitingForSecondKey = true;
} else {
char secondKey = key;
secondFruit = getFruitForKey(secondKey);
Serial.println("Segunda fruta: " + getFruitName(secondFruit)); // Muestra la segunda fruta
if (firstFruit == secondFruit) {
Serial.println("¡Encontraste un par!");
} else {
Serial.println("¡Intentalo de nuevo!");
}
delay(1000); // Breve pausa para que el jugador vea el resultado antes de continuar
firstKey = '\0';
waitingForSecondKey = false;
}
}
}
char key = keypad.getKey();
if (key != '\0') {
if (!waitingForSecondKey) {
firstKey = key;
firstFruit = getFruitForKey(firstKey);
Serial.println("Primera fruta: " + getFruitName(firstFruit)); // Muestra la primera fruta
waitingForSecondKey = true;
} else {
char secondKey = key;
secondFruit = getFruitForKey(secondKey);
Serial.println("Segunda fruta: " + getFruitName(secondFruit)); // Muestra la segunda fruta
if (firstFruit == secondFruit) {
Serial.println("¡Encontraste un par!");
} else {
Serial.println("¡Intentalo de nuevo!");
}
delay(1000); // Breve pausa para que el jugador vea el resultado antes de continuar
firstKey = '\0';
waitingForSecondKey = false;
}
}
}
// Función para obtener la fruta asociada a una tecla
char getFruitForKey(char key) {
switch (key) {
case '1':
return 'M';
case '2':
return 'N';
case '3':
return 'O';
case '4':
return 'P';
case '5':
return 'Q';
case '6':
return 'R';
case '7':
return 'S';
case '8':
return 'T';
case '9':
case '0':
case '*':
case '#':
case 'A':
case 'B':
case 'C':
case 'D':
return '\0'; // Las teclas restantes no tienen asociada ninguna fruta
default:
return '\0';
}
}
char getFruitForKey(char key) {
switch (key) {
case '1':
return 'M';
case '2':
return 'N';
case '3':
return 'O';
case '4':
return 'P';
case '5':
return 'Q';
case '6':
return 'R';
case '7':
return 'S';
case '8':
return 'T';
case '9':
case '0':
case '*':
case '#':
case 'A':
case 'B':
case 'C':
case 'D':
return '\0'; // Las teclas restantes no tienen asociada ninguna fruta
default:
return '\0';
}
}
// Función para obtener el nombre de la fruta
String getFruitName(char fruit) {
switch (fruit) {
case 'M':
return "Manzana";
case 'N':
return "Naranja";
case 'O':
return "Uva";
case 'P':
return "Pera";
case 'Q':
return "Banano";
case 'R':
return "Fresa";
case 'S':
return "Sandia";
case 'T':
return "Kiwi";
default:
return "Coco";
}
}
String getFruitName(char fruit) {
switch (fruit) {
case 'M':
return "Manzana";
case 'N':
return "Naranja";
case 'O':
return "Uva";
case 'P':
return "Pera";
case 'Q':
return "Banano";
case 'R':
return "Fresa";
case 'S':
return "Sandia";
case 'T':
return "Kiwi";
default:
return "Coco";
}
}