UTNianos

Versión completa: Buscaminas en C
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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 =P


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!

[Imagen: 320447_4268059229340_1444070067_n.jpg]
Mandale un system("clear");
Para borrar la pantalla y que no se repita a cada rato!
Bien ahiii!, esta re buno che=D, lastima las 80 lineas para declarar una matriz jaja.
hacelo en C# para jugar con mouse (?)
Meté el .exe en un .rar =P
A pedido de Nanu:
que grande sentey !!
Muy bueno Heart
Muy bueno!
Para la proxima, para hacer partidas aleatorias posta podes usar rand y srand.
Me causa gracia que todos le dijeron que haga algo distinto JJAA
Vos fuiste el primero jaja =P
hace añares perdi las bibliotecas con el modo grafico de c, sino te lo pasaba, es todo una experiencia programar c++ modo grafico con mouse XD

pd me gustaria ver el generador de partidas Yea2
(08-07-2012 02:59)Maik escribió: [ -> ]hace añares perdi las bibliotecas con el modo grafico de c, sino te lo pasaba, es todo una experiencia programar c++ modo grafico con mouse XD

pd me gustaria ver el generador de partidas Yea2

Lo voy a hacer! Ya lo tengo todo en la cabeza, tengo que pasar esta semana de parciales y ahi le voy a meter a full.
URLs de referencia