Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: anuska en 20 de Julio de 2006, 08:03:08 PM

Título: Buscaminas en c++
Publicado por: anuska en 20 de Julio de 2006, 08:03:08 PM
Hola a todos!!
soy nueva en el foro.

Necesito vuestra ayuda para realizar el juego del buscaminas en c++. Lo tengo que hacer con el visual C++. Espero que me podais ayudar.
Muchísimas gracias!! :wink:
Título: Buscaminas en c++
Publicado por: seryu en 20 de Julio de 2006, 09:04:22 PM
Hola, pues suerte haciendo el buscaminas, las dudas puntuales que te vayan surgiendo puedes preguntarlas y a ver si te podemos ayudar.

¿Ya sabes como lo vas a empezar?
Título: Buscaminas en c++
Publicado por: Sante en 20 de Julio de 2006, 10:57:12 PM
Hola, a ver si te puedo ayudar un poco.

Mas que nada, estas son ideas generales, los detalles de la implementación corren por tu cuenta. También asumo que conoces bien como funciona el juego.

Básicamente, la estructura de datos es un array de casillas. Por cada casilla, necesitas guardar:

- Su tipo (mina, blanca, o número)
- Si está o no destapada
- Si está o no marcada

Tienes tres tipos de casilla: minas, casillas blancas, o casillas con números.

Las minas no necesitan mucha explicación. Simplemente indican que en esa casilla hay una mina.

Las casillas blancas son las que no tienen nada en absoluto. Ni una mina, ni están adyacentes a ninguna casilla con mina.

Las casillas con número son las que están adyacentes a una mina (o varias), y el número indica cuántas minas hay al lado. Por tanto, puede ir de 1 a 8.

En mi caso, lo que hice fue guardar el tipo con un entero. Un -1 representaba la mina. Un 0 la casilla blanca, y desde el 1 hasta el 8 las distintas casillas con número. En realidad, eso da igual como lo hagas.


El jugador tiene dos acciones: puede destapar una casilla, o marcar / desmarcar casillas. El juego termina si el jugador destapa una mina (pierde), o bien si el número de casillas por destapar coincide con el número de minas del tablero (gana).

Marcar / desmarcar casillas es trivial, sólo tienes que cambiar el estado de marcada de true a false, o viceversa.

Destapar una casilla es un procedimiento recursivo, que sigue este guión:

- Si la casilla es una mina, se destapa y se acaba la partida.
- Si la casilla es un número, se destapa.
- Si la casilla es una blanca, se destapa, y se llama a destapar para todas las casillas adyacentes que no esten destapadas.
- Las casillas marcadas NUNCA se destapan.


Generar el tablero también es bastante simple. Por cada mina, primero la colocas en una posicion al azar, y despues para todas las casillas adyacentes que no sean mina, incrementas en uno su número (asumiendo que las blancas tienen número 0).


Lo último que queda es hacer el interface, pero como no suelo usar el Visual C++ para hacer ventanas windows, prefiero no decir nada para no liarte...  :roll:

Venga, un saludo.
Título: Buscaminas en c++
Publicado por: Mars Attacks en 21 de Julio de 2006, 12:59:34 AM
Una respuesta impecable :)
Título: Buscaminas en c++
Publicado por: anuska en 25 de Julio de 2006, 12:23:20 PM
No había podido ver las respuestas hasta ahora. Pero muchísimas gracias, sante.
Voy a ponerme a ello. Ya os iré contando.  :wink: