viernes, 6 de diciembre de 2013

Asi queda nuestro buscaminas




Programacion Buscaminas

En nuestro ActionPerformed

creamos otro cuadro que sera el que se oprima, creamos un if que nos dirá si el botón que oprimimos esta minado salga un mensaje diciendo que Perdió, y si no pinte el cuadro de un color, y que valla contando el numero de cuadros, si el numero del cuadro menos el contador de minas es igual al contador, el usuario gana, es decir el num de cuadros generados - las minas= contador significa que ya todos los cuadros ya están evaluados


El Código es:


public void actionPerformed(ActionEvent e)
    {
        Cuadro temp2= (Cuadro) e.getSource(); // evento a q cuadro  se oprimio
        if(temp2.estaMinado())
        {
            javax.swing.JOptionPane.showMessageDialog(this,":O Mina ¡¡ Perdiste !! ");
            this.contador=0;// si se pierde el contador es cero
        }
        else
        {
            temp2.setBackground(Color.BLUE);
            contador++;
            if((numeroCuadro-contadorMinas)==contador)
                javax.swing.JOptionPane.showMessageDialog(this,"Ganaste !! ");
        }
    }

Programacion Buscaminas

En nuestra ventana principal

 El botón comenzar tendrá un Action Performed, el cual se activara cuando se le de click al botón


  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                      

        iniciar();
        this.paintAll(this.getGraphics()); // va a pintar toda la interfaz grafica
}

Creamos un metodo que va a inicializar el juego el cual  tendra dos enteros siendo filas, columnas,  el cual apartir del Text se conseguirla lo que ingrese y se convertira en un entero, creamos un Layout que nos dibujara la fila y columnas.
creamos dos for que cuenten nuestras filas y columnas, para que cada vez se genere un ciclo se cree un nuevo boton, creamos un nuevo cuadro le asignamos el color que tendrá, le agregamos al cuadro el ActionListener para ejecutar cuando se oprima un boton,.
creamos dos contadores el cual sera  contador de numero de cuadros y minas .

Llevando el siguiente código


private void iniciar ()
            {
                this.panel_juego.removeAll(); //borra los objetos para volver a empezar
                int nFilas, nColumnas;
             
                nFilas=Integer.parseInt(this.filas.getText()); //obtiene el texto y lo coloque en filas, convirtiendolo en un num entero y lo guarde en nFilas
                nColumnas=Integer.parseInt(this.columnas.getText());
             
                this.panel_juego.setLayout(new java.awt.GridLayout(nFilas,nColumnas)); //al ejecutar se crea el layout
             
             
                this.numeroCuadro=nFilas*nColumnas ;
                this.contadorMinas=0; //para cundo reinicie el juego vuelva a cero
             
             
                for (int i=0;i<nFilas;i++)
                {
                    for(int j=0;j<nColumnas;j++)
                        //cada vez que se haga el ciclo se gener un nuevo boton
                    {
                       Cuadro temp=new Cuadro (); // creamos el cuadro
                       temp.setBackground(Color.BLACK);
                       temp.addActionListener(this); //escuchador todos los botones generados ejecutara el metodo de Action
                       if(temp.estaMinado())
                           this.contadorMinas++;
                       temp.setVisible(true);
                       this.panel_juego.add(temp);
                     
                     
                     
                    }
                }
             
             
             
            }

Programando Buscaminas

Creamos una clase nueva llamada Cuadro la cual va a extender a un JButton, ya que los cuadros van a ser botones, esta clase va a tener una propiedad que va a ser una mina( puede que sea verdadera o falso si un cuadro tiene una mina), se crea una variable random, la cual va a tener un valor aleatorio para definir si un cuadro tiene una mina, craos un metodo boolean llamado estaMinado el cual va a regresar el valor de mina, y si esta minado es verdadero, y si no falso.

El código es el siguiente

public class Cuadro extends JButton{
 
    private boolean mina;
 
public Cuadro ()
{
 
    super (); //llama al constructor de la clase de la que se hereda "extends"
    double random = Math.random();
     if(random>0.8)
         mina=true;
     else
         mina=false;
}
 public boolean estaMinado()
 {      
 return mina;              
 
}

}    

Programando Buscaminas

Para hacer visible nuestra ventana, creamos en nuestra clase principal Buscaminas, creando un objeto de la clase Ventana Principal, la cual agregamos un titulo, la hacemos visible y la localizamos a la mitad de la pantalla.

Llevando el siguiente código

 VentanaPrincipal v= new VentanaPrincipal();
        v.setTitle("Buscaminas");
        v.setVisible(true);
        v.setLocationRelativeTo(null);


Programar Buscaminas

para programar un buscaminas fácil debemos crear un proyecto en netbeans llamado Buscaminas, de hay creamos un J Frame Form, el cual estará el diseño de nuestra ventana, el cual constara  de 2 Panel, en el primero ira los controles los cuales sera 2 Jlabel( el cual se llamaran una filas y la otra columnas) y 2 TextArea( el cual ira vació y tendrá como nombre de variable columna y filas, esto sera para que el usuario ingrese la dimensión del tablero), agregamos un botón que llamaremos comenzar, el segundo Panel lo dejamos vació y lo renombrado como panel_juego.
Nuestra ventana quedara así.


Buscaminas

Es un videojuego para un jugador inventado por Robert Donner en 1989. El objetivo del juego es despejar un campo de minas sin detonar ninguna.

¿En que consiste e juego?

El juego consiste en despejar todas las casillas de una pantalla que no oculten una mina.
Si se descubre una casilla con una mina se pierde la partida
se puede personalizar la dificultad de juego según el tamaño de la pantalla.