03-07-2012, 23:45
Aca les dejo mi primer intento de programa en C...
Es version 1.0, las proximas versiones prometen:
-Generador de partidas, no solo la que viene cargada
-Posibilidad de elegir distintos tamaños de tablero y cantidad de minas para aumentar o disminuir la dificultad
-Que cuando se elige un lugar con el numero "0" se revelen todos los 0 adyacentes (como en el buscaminas de verdad)
-Eficiencia y menos hardcodeo
Código
Tambien les dejo el .exe para jugarlo
edit: bueno, el foro no me deja adjuntar el .exe, dejo screen para que se animen y compilen el codigo en casa ustedes mismos!
Es version 1.0, las proximas versiones prometen:
-Generador de partidas, no solo la que viene cargada
-Posibilidad de elegir distintos tamaños de tablero y cantidad de minas para aumentar o disminuir la dificultad
-Que cuando se elige un lugar con el numero "0" se revelen todos los 0 adyacentes (como en el buscaminas de verdad)
-Eficiencia y menos hardcodeo
Código
Spoiler: Mostrar
/* Buscaminas */
#include <stdio.h>
#define SIZE 10
void imprimir(char [SIZE][SIZE], int);
void inicializarTabla(char [SIZE][SIZE] , int);
void inicializarTablaReal(char [SIZE][SIZE], int);
void modificarTabla(char, char *, int *, int *);
main()
{
char tabla[SIZE][SIZE], tablaReal[SIZE][SIZE]; /* Tablero de 9x9 que se muestra al usuario y el tablero real */
int fila, columna, estado = 1, camposRestantes = 71; /* 1 es en juego, 2 es que perdio y 3 es que gano */
inicializarTablaReal(tablaReal, SIZE);
inicializarTabla(tabla, SIZE);
printf("Bienvenido a Buscaminas 1.0 by sentey!\n");
printf("Para jugar, escriba la posicion a elegir en formato Fila Columna\n\n");
do {
imprimir(tabla, SIZE);
scanf("%d%d", &fila, &columna);
if (tabla[fila][columna] == '*')
modificarTabla(tablaReal[fila][columna], &tabla[fila][columna], &estado, &camposRestantes);
else
printf("Ya elegiste ese lugar!\n");
} while (estado == 1);
if (estado == 3) {
imprimir(tabla, SIZE);
printf("Ganaste!");
}
else {
imprimir(tabla, SIZE);
printf("Perdiste!");
}
return 0;
}
void inicializarTabla(char t[SIZE][SIZE] , int size)
{
int i, j;
for (i = 1; i <= size-1; i++) {
for (j = 1; j <= size-1; j++)
t[i][j] = ('*');
}
}
void inicializarTablaReal(char t[SIZE][SIZE], int size)
{
t[1][1] = '1';
t[1][2] = '1';
t[1][3] = '1';
t[1][4] = '1';
t[1][5] = '1';
t[1][6] = '1';
t[1][7] = '1';
t[1][8] = '1';
t[1][9] = '1';
t[2][1] = '1';
t[2][2] = 'M';
t[2][3] = '1';
t[2][4] = '1';
t[2][5] = 'M';
t[2][6] = '1';
t[2][7] = '1';
t[2][8] = 'M';
t[2][9] = '1';
t[3][1] = '1';
t[3][2] = '1';
t[3][3] = '1';
t[3][4] = '2';
t[3][5] = '2';
t[3][6] = '2';
t[3][7] = '1';
t[3][8] = '1';
t[3][9] = '1';
t[4][1] = '0';
t[4][2] = '0';
t[4][3] = '0';
t[4][4] = '1';
t[4][5] = 'M';
t[4][6] = '2';
t[4][7] = '1';
t[4][8] = '0';
t[4][9] = '0';
t[5][1] = '0';
t[5][2] = '0';
t[5][3] = '0';
t[5][4] = '1';
t[5][5] = '3';
t[5][6] = 'M';
t[5][7] = '2';
t[5][8] = '0';
t[5][9] = '0';
t[6][1] = '1';
t[6][2] = '1';
t[6][3] = '1';
t[6][4] = '0';
t[6][5] = '2';
t[6][6] = 'M';
t[6][7] = '3';
t[6][8] = '1';
t[6][9] = '1';
t[7][1] = '1';
t[7][2] = 'M';
t[7][3] = '2';
t[7][4] = '1';
t[7][5] = '1';
t[7][6] = '1';
t[7][7] = '2';
t[7][8] = 'M';
t[7][9] = '1';
t[8][1] = '1';
t[8][2] = '2';
t[8][3] = 'M';
t[8][4] = '2';
t[8][5] = '1';
t[8][6] = '1';
t[8][7] = '1';
t[8][8] = '1';
t[8][9] = '1';
t[9][1] = '0';
t[9][2] = '1';
t[9][3] = '1';
t[9][4] = '2';
t[9][5] = 'M';
t[9][6] = '1';
t[9][7] = '0';
t[9][8] = '0';
t[9][9] = '0';
}
void imprimir(char t[SIZE][SIZE] , int size)
{
int i, j;
printf(" 123456789\n");
for (i = 1; i <= size-1; i++) {
printf("\n%30d ", i);
for (j = 1; j <= size-1; j++)
printf("%c", t[i][j]);
}
printf("\n");
}
void modificarTabla(char campo, char *campoAModificar, int *estado, int *camposRestantes)
{
*campoAModificar = campo;
if (campo == 'M')
*estado = 2;
else {
--*camposRestantes;
if (*camposRestantes == 0)
*estado = 3;
}
}
Tambien les dejo el .exe para jugarlo
edit: bueno, el foro no me deja adjuntar el .exe, dejo screen para que se animen y compilen el codigo en casa ustedes mismos!