C�mo programar�a un buscaminas


Antes que nada voy a explicar c�mo se juega el buscaminas.
El buscaminas tiene muchos cuadritos, el chiste es destaparlos todos, nada mas que hay unos que tienen minas, esos los debes marcar con el bot�n derecho del mouse. En los cuadros que no son minas hay n�meros, el n�mero significa las minas que hay junto al cuadro en los 8 cuadros que est�n arriba, abajo o a los lados. Hay cuadros donde no hay minas ni n�meros, entonces se abren todos los cuadros que est�n junto a ese cuadro hasta que se abren cuadros que tienen n�meros, los que no lo han visto �branlo para que entiendan lo que digo.

Yo lo programar�a de la siguiente manera:

-Se hace un n�mero determinado de cuadros(ya sea que le pida el valor al usuario o sea un valor predeterminado). Los cuadros deben tener sus coordenadas horizontales y verticales dentro de variables, llamemos a esas coordenadas "h" y "v" para facilitar los pasos de abajo
-Sabiendo el n�mero de minas que voy a poner, genero n�meros aleatorios, supongo que todos los lenguajes de programaci�n tienen una forma para generarlos. �sto lo hago con un ciclo que va contando las minas que voy poniendo hasta que llego a las minas que debo tener, un n�mero aleatorio para la coordenada horizontal y otro para la vertical. -Para poner las minas los cuadros deben tener un m�todo que pregunte si es mina, por lo tanto debe tener una variable que con un "1" � "0" te dicen si es mina o no, entonces cuando el ciclo va poniendo la mina va preguntando si ese cuadro ya es mina, en caso de que sea mina no avanza el contador y escoge otro cuadro para poner esa mina.
-Despu�s de poner las minas se deben poner los n�meros, entonces seria con dos ciclos, uno que "barra" los cuadros horizontalmente y otro verticalmente, dentro de esos ciclos se le va preguntando a cada cuadro cu�ntas minas tiene a su alrededor y por lo tanto el n�mero que debe tener.
-Para ver cu�ntas minas hay junto a un cuadro se les pregunta a los cuadros que est�n junto a ese cuadro si tienen mina. Para preguntarles se usa el m�todo para saber si hay minas en los cuadros que tengan coordenadas "h-1,v-1","h-1,v","h-1,v+1" y as� hasta que se tengan los 8 cuadros que rodean al cuadro. Si el cuadro es mina simplemente se lo brinca
-Se tiene que poner un "if" para los cuadros que est�n en las orillas y que no colindan con 8 cuadros, entonces si h-1==0 se brinca al siguiente cuadro, y as�(si fuera un buscaminas esf�rico no se necesitar�a eso)
-Como el m�todo para preguntar si es mina te regresa un "1" y un "0", supongamos que el "1" es para cuando haya mina, entonces vamos sumando los unos y el resultado que nos de va a guardarse en otra variable, ese va a ser el n�mero que tenga el cuadro.

-Los cuadros empiezan con una imagen de "cuadro cerrado" que es un cuadro normal.
-Se le asigna a cada cuadro su imagen de "cuadro abierto" que va a ser una im�gen de una mina o mina roja si se quiere hacer como el de Windows o del n�mero que le corresponda(n�meros de colores como los de Windows) y los ceros ser�a un cuadro gris destapado.

-Se le puede agregar un cron�metro y un contador de las minas que restan.
-Para el contador de las minas que quedan se pone el n�mero de las minas que hay menos las que han sido marcadas como minas, debe poder usar valores negativos, por si el usuario se equivoca.

-Los cuadros tambi�n van a tener una variable que diga si est�n "activos" o no, eso quiere decir si se pueden destapar o no. No se van a poder destapar cuando ya hayan sido destapados o cuando se les marque como minas.
-Con el bot�n derecho del mouse se "desactivan" los cuadros, con otro click se activan(se le puede poner tambi�n el signo de interrogaci�n.)
-Cuando se desactiva un cuadro con el bot�n derecho del mouse se le resta 1 al contador de minas, cuando se reactiva el cuadro con el bot�n derecho del mouse al contador de minas se le suma 1. Para esto, cada que se pulse el bot�n derecho debe mandarse de nuevo la im�gen del contador de minas, a menos que se use lo del signo de interrogaci�n, ah� solo cambiar�a el contador de minas cuando pasara de activo a inactivo con el bot�n derecho o de inactivo a interrogaci�n.
-Tamb�en debe cambiar la imagen cuando el cuadro haya sido marcado como mina.

-Con el click izquierdo se abre el cuadro, esto es con un m�todo que abra el cuadro y va a mostrar la imagen de cuadro abierto
-Aqu� se tiene que ver que el primer cuadro que se destapa no sea mina, en caso de que sea mina, se reasignan todas las minas y las im�genes de cuadro cerrado y se destapa el cuadro si no es mina.
-Despu�s de que un cuadro es destapado se "desactiva", eso quiere decir que si lo aprietan otra vez no pasa nada.
-Ya que el cuadro est� abierto le pregunta si es mina, si el cuadro es mina te destapa la mina y pone rojo el cuadro y te manda a un m�todo qu destape todas las minas, solo debe preguntarle a todos los cuadros si son minas y si son minas los detapa.
-Si el cuadro es n�mero mayor a 0 simplemente muestra la imagen de cuadro abierto
-Cuando el cuadro tiene un valor de cero, primero se muestra la imagen de cuadro destapado. -Luego abre todos los cuadros que est�n junto a �l, eso lo hace con un m�todo. Ese m�todo va abriendo cada uno de los cuadros, lo hace usando el m�todo de abrir cuadro en los cuadros que est�n junto al "0", se hace usando coordenadas igual que como se pusieron las minas, se fija uno que no vaya a pedir que abran cuadros que no existan cuando se est� en las esquinas, porque eso provocar�a un error.
-En caso de que haya otro "0" se abren primero las del segundo "0" y luego se regresa, as� si hay varis ceros, se manda llamar otra vez al m�todo que se est� ocupando y cuando acaba regresa a lo que estaba haciendo antes. En este m�todo que abre los cuadros que est�n junto a los ceros pregunta si el cuadro est� activo o inactivo, si est� inactivo se lo brinca. Eso va a seguir hasta que queden rodeados de n�meros.

-Se le podr�a poner un contador que cuente los cuadros que se abrieron, y cuando ese contador llegue al total de cuadros menos el n�mero de minas significa que ya se destaparon todos los cuadros que no tienen mina, por lo tanto el usuario ya gan�. Ah� se detendr�a el cron�metro y se ver�a si entra dentro de los mejores tiempos, etc.

Falt� c�mo le agregar�a los botones para reiniciarlo, para preguntarle el tama�o y todo eso, pero eso ya depende de c�mo lo quieran hacer.

Hosted by www.Geocities.ws

1