#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 4 // Tamaño del tablero (4x4)
void inicializarTablero(char tablero[SIZE][SIZE], char cartas[SIZE*SIZE]) {
int index = 0;
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
tablero[j] = '*'; // Inicializar con cartas ocultas
}
}
// Barajar las cartas
for (int i = 0; i < SIZE * SIZE; i++) {
int j = rand() % (SIZE * SIZE);
char temp = cartas[i];
cartas[i] = cartas[j];
cartas[j] = temp;
}
// Colocar las cartas en el tablero
index = 0;
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
tablero[i][j] = cartas[index++];
}
}
}
void mostrarTablero(char tablero[SIZE][SIZE]) {
printf("Tablero:\n");
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%c ", tablero[i][j]);
}
printf("\n");
}
}
int main() {
char tablero[SIZE][SIZE];
char cartas[SIZE * SIZE] ={'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E', 'F', 'F', 'G', 'G', 'H', 'H'};
int paresEncontrados = 0;
int totalPares = SIZE * SIZE / 2;
int jugador = 1;
srand(time(NULL)); // Inicializar la semilla para la aleatoriedad
inicializarTablero(tablero, cartas);
while (paresEncontrados < totalPares) {
mostrarTablero(tablero);
printf("Jugador %d, elige dos cartas (fila columna):\n", jugador);
int fila1, col1, fila2, col2;
printf("Primera carta: ");
scanf("%d %d", &fila1, &col1);
printf("Segunda carta: ");
scanf("%d %d", &fila2, &col2);
// Verificar si las cartas son iguales
if (tablero[fila1][col1] == tablero[fila2][col2]) {
printf("¡Encontraste un par!\n");
paresEncontrados++;
} else {
printf("No son iguales. Intenta de nuevo.\n");
// Ocultar las cartas nuevamente
tablero[fila1][col1] = '*';
tablero[fila2][col2] = '*';
}
// Cambiar de jugador
jugador = (jugador == 1) ? 2 : 1;
}
printf("¡Jugador %d ha ganado!\n", jugador);
return 0;
}