Aquí os dejo una cosita que he hecho esta noche Llevaba tiempo sin programar absolutamente nada y he pensado que ya era hora...
Tan sólo comentadme si veis que le falta algo importante, si he puesto algún disparate, etc... Si os animáis hasta podéis seguir desarrollándolo un poquito ¡Gracias!
*** Modif 18/11/12 - 11:25 : He eliminado un bucle for innecesario
Tan sólo comentadme si veis que le falta algo importante, si he puesto algún disparate, etc... Si os animáis hasta podéis seguir desarrollándolo un poquito ¡Gracias!
CitarPastebin: http://pastebin.com/Gwq42z1u
Código (c) [Seleccionar]
// By ***** : 17-18.11.2012 : Lenguaje C
// FALTA: - Mostrar casillas próximas a abierta que sean 0 - Implementar sistema de marcación por tiempo y menú
// - Mejorar entrada datos - Implementar interfaz más intuitiva
// - Mejorar algoritmo y simplificar el código
// Made with NANO + GCC - Linux Ubuntu 3.5.0-17 i686 - También funciona correctamente en plataforma Windows [PORTABLE]
#include <stdio.h>
#define TAM2 6
#define TAM (TAM2*TAM2)
#define MINA TAM2*2
int main (int argc, char *argv [])
{ printf ("Buscaminas 1.0 : By ***** 2012\n"); if (TAM2<=2 || TAM2>9) { printf ("[!] Please change the TAM2 value [>2 min - <9 max]\n"); return 1; } printf ("\n");
int tablero [TAM], tablero2 [TAM], a, b, x; srand (time (NULL)); for (a=0; a<TAM; a++) { tablero [a]=0; tablero2 [a]=0; }
for (a=0; a<MINA; a++) { b=rand ()%TAM; while (tablero [b]==-1) b=rand()%TAM; tablero [b]=-1; }
for (a=0, b=0; a<TAM; a++) {
if (tablero [a-1]==-1 && (a+0)%TAM2!=0 && a>=1) b++; if (tablero [a+1]==-1 && (a+1)%TAM2!=0 && a<(TAM-1)) b++;
if (tablero [a-TAM2]==-1 && a>=TAM2) b++; if (tablero [a+TAM2]==-1 && a<(TAM-TAM2)) b++;
if (tablero [a-(TAM2+1)]==-1 && (a+0)%TAM2!=0 && a>=(TAM2+1)) b++; if (tablero [a+(TAM2+1)]==-1 && (a+1)%TAM2!=0 && a<(TAM-TAM2-1)) b++;
if (tablero [a-(TAM2-1)]==-1 && (a+1)%TAM2!=0 && a>=(TAM2-1)) b++; if (tablero [a+(TAM2-1)]==-1 && (a+0)%TAM2!=0 && a<(TAM-TAM2+1)) b++;
if (tablero [a]==-1) {b=0; continue;} else tablero [a]=b; b=0; }
while (1) { printf (" "); for (x=1; x<=TAM2; x++) printf ("%d ", x); printf ("\n "); for (x=1; x<=TAM2; x++) printf ("- ", x);
for (a=0; a<TAM; a++) {
if (a%TAM2==0) printf ("\n%d. ", (a/TAM2)+1); if (tablero2 [a]==1) printf ("%d ", tablero [a]); else printf (". "); } printf ("\n");
printf ("\nInsert X: "); scanf ("%d", &a); while (a<1 || a>TAM2) { printf ("[!] The inserted value is not OK. Please choose one value between 1 and %d...\n", TAM2); printf ("\nInsert X: "); scanf ("%d", &a); }
printf ("Insert Y: "); scanf ("%d", &x); while (x<1 || x>TAM2) { printf ("[!] The inserted value is not OK. Please choose one value between 1 and %d...\n", TAM2); printf ("Insert Y: "); scanf ("%d", &x); } a=(a-1)*TAM2+(x-1);
if (tablero [a]==-1) { printf ("--- You lost this time... ---\n"); printf (" "); for (x=1; x<=TAM2; x++) printf ("%d ", x); printf ("\n "); for (x=1; x<=TAM2; x++) printf ("- ", x); for (a=0; a<TAM; a++) { if (a%TAM2==0) printf ("\n%d. ", (a/TAM2)+1); if (tablero [a]==-1) printf ("* "); else printf ("%d ", tablero [a]); } printf ("\n\n"); return 0; }
else {tablero2 [a]=1; b++;}
if (b==TAM-MINA) { printf ("\nCongratulations! You won this time...\n"); return 0; } }
}
*** Modif 18/11/12 - 11:25 : He eliminado un bucle for innecesario