viernes, 7 de octubre de 2011

JUEGO DE BUSCAMINAS PROGRAMADO EN DEV C++

Hola a tod@s...

En esta ocasión les traigo un proyecto que consiste en el desarrollo e implementación del famoso juego de Buscaminas. El lenguaje de programación que se utilizó para realizar este proyecto fue C++.

Antes de ir con la descripción de las funciones que se implementaron para realizar el proyecto vamos a ver algunos conceptos de este famoso juego.

Como ya es conocido el juego del Buscaminas fue inventado por Robert Donner en el año de 1989. El objetivo en el juego es despejar un campo con minas sin detonar ninguna de ellas.

El juego se hizo popular debido a las versiones que vinieron y vienen con el sistema operativo Microsoft Windows desde su versión 3.1.

A continuación las reglas del juego:

  • La idea del juego es despejar todas aquellas casillas de una ventana que no oculten una mina.
  • Ciertas casillas tienen asignadas un número, este número indica las minas que se encuentran adyacentes a esta casilla. Por ejemplo si una casilla tiene el número 2, entonces de las ocho casillas adyacentes a esta (si no es en una esquina o borde) hay 2 con minas y 6 sin minas. Si se descubre una casilla y esta se encuentra vacía, esto indica que las casillas vecinas no tiene mina y estas se descubren automáticamente.
  • Al descubrir una casilla con una mina se pierde el juego.
  • Se gana el juego cuando se logra destapar todo el campo sin detonar una casilla con una mina.
Ahora pasamos a describir las 17 funciones que se implementaron para lograr tener el juego funcionado:
  • void nombrePrograma(): Esta función nos permite mostrar el nombre del programa en la ventana de ejecución.
  • void limpiarMatriz(int Matriz[][30],int N): Esta función realiza un recorrido de una matriz de enteros para almacenar en ella ceros, en términos informáticos se está realizando una limpieza de dicha matriz para no tener problemas más adelante al momento de ejecutar nuestro juego.
  • void generarMarcoBuscaminas(int N): Esta función como su nombre lo dice nos permite generar y colocar el marco que rodeará a todas las casillas o celdas del juego Buscaminas.
  • void colocarDigitoHorizontal(int N): Esta función se implementó para colocar el número que le corresponde a una determinada columna en la ventana de ejecución.
  • void colocarDigitoVertical(int N): Esta función al igual que la anterior se implementó para colocar el número que le corresponde a una fila en la ventana de ejecución.
  • int validarDimensionBuscaminas(): Esta función permite validar que el tamaño del juego Buscaminas sea mayor o igual que nueve y menor o igual que veinte, a su vez ayuda a validar que el número de filas sea igual al numero de columnas (una matriz cuadrada). Retorna un valor entero el cual será el valor tanto de las filas como de las columnas.
  • int validarNumeroMinas(int N): Con esta función se valida que el número de minas no sea menor que veinte ni mayor que el número de casillas/2. Retorna un valor entero el cual representa el número de minas que van a existir en el campo de juego.
  • void generarBuscaminas(char A[][30],int N,int m): Esta función nos permite generar las minas que son representadas por un "*" y colocarlas en el campo de juego.
  • void contarMinasBuscamicas(char A[][30],int N): La finalidad de esta función es contar las cantidad de minas existentes en las casillas adyacentes a una determinada casilla y colocar el valor de la cantidad dentro de esta.
  • void leerColocarDigitoBuscaminas(char A[][30],int i,int j,int n): Esta función es usada en la función contarMinasBuscaminar() para colocar el valor de la cantidad de minas existentes en las casillas adyacentes a la casilla analizada.
  • void reportarBuscaminasSinSolucion(char A[][30],int N): Esta función nos permite mostrar las casillas iniciales del juego Buscaminas todas cubiertas dentro del marco generado.
  • void matrizBanderaAuxiliar(int B[][30],char A[][30],int N): Con esta función se almacenan los valores de cada casilla en una matriz auxiliar la cual servirá para ir mostrando los valores o mina de las casillas destapadas.
  • void reportarBuscaminasCasillaDestapada(int N,int X, int Y,int B[][30],char A[][30]): Esta función nos permite reportar el campo del juego Buscaminas con las respectivas casillas destapadas luego de seleccionar una posición para ver el valor de dicha casilla.
  • int verificarCasillaDestapada(char[][30],int X,int Y,int M): Esta función permite verificar una jugada, si la casilla descubierta no contiene mina se puede seguir jugando caso contrario termina el juego. Retorna 1 si la casilla no contiene mina y retorna -1 si la casilla contiene una mina.
  • void mostrarContenidoCasillaDestapada(int B[][30],char A[][30],int N): Esta función nos permite mostrar el contenido de cada casilla o casillas al momento de realizar una jugada.
  • void verificarAdyacente(int B[][30],int i, int j): Esta función nos ayuda a verificar las casillas adyacentes a una casilla vacía para ser destapadas en el caso de que sigan vacías o no contengas una mina. Una casilla vacía en el en el juego esta representada por un "0".
  • int ContarMinasSinDestapar(int N,int B[][30]): Función que ayuda a verificar si el jugador a ganado, esto se realiza contando las casillas sin destapar. Si el número de casillas sin destapar es igual al número de minas el jugador a ganado.
Aquí algunas imágenes del juego desarrollado:
Imagen 1


Imagen 2


Imagen 3


Imagen 4


Imagen 5


Imagen 6

Finalmente adjunto les dejo el código fuente para que prueben el juego y si desean lo mejoren. A las personas que han decidido mejorar el proyecto se les agradece si envían la nueva versión a mi correo vehac69@gmail.com.

12 comentarios:

  1. No puedo ejecutarlo me salen bastantes errores.

    ResponderEliminar
  2. Buen día, los pasos para que funcione la aplicación son los siguientes:

    1.- Luego de descargar y descomprimir los archivos debes dar click en el archivo del proyecto BuscaMinas.dev.
    2.- Ahora observarás el proyecto abierto en dev C++, ya dentro debes dar click en la opción compilar.
    3.- Finalmente das click en la opción ejecutar de dev C++.

    Con estos pasos debería funcionar 0K!!! la aplicación, ya que no hay más detalle; espero te sirvan los pasos para ejecutar y compilar la aplicación.

    Si el problema sigue, trata de colocar la aplicación en otra partición de tu disco, por ejemplo en la partición D y sigues los pasos ya mencionado arriba

    Saludos!!!

    ResponderEliminar
  3. Hola, no me compila el buscaminas.dev podrías comprobar que no tenga errores?. Tu programa me puede ayudar mucho, tengo que hacer precisamente un proyecto de un Buscaminas en C++ y tu programa me sirve para guiarme. Gracias :)

    ResponderEliminar
  4. Hola Daniel, se descargó el programa y se comprobó, este tiene cero errores. Volví a subir el programa ya comprobado. Saludos!!!

    ResponderEliminar
    Respuestas
    1. disculpa , me sale un error , lo compile y sale id returnerd 1 exit status

      Eliminar
  5. muchas gracias por este programa funciona a la perfeccion

    ResponderEliminar
  6. muchas gracias por el aporte! me has salvado de una tarea, me sirvio de mucho ejemplo :D

    ResponderEliminar
  7. hola que tal me podrian ayudar ?
    busco hacer un juego parecido al de las buscaminas,solo quiero que se impriman los resultados obtenidos por ejemplo *=M
    *000*0 M223M1
    00**00 12MM21

    ResponderEliminar
    Respuestas
    1. Hola, para lo que deseas solo tendrías que usar y hacer una variación en estas funciones:
      -> contarMinasBuscamicas
      -> leerColocarDigitoBuscaminas
      -> matrizBanderaAuxiliar

      Saludos.

      Eliminar
  8. hola me gustaria hacer el juego de caliente y frio es casi parecido al de busca minas solo k debe estar oculto un objeto y si estoy cerca o dejos la makina me diga caliente o frio alguien me puede ayudar kon eso

    ResponderEliminar
    Respuestas
    1. Que tal, puedes descargar el código fuente adjunto al final del post, en este puedes modificar su lógica y realizar lo que deseas. Saludos.

      Eliminar