Buscaminas en Java Swing con foto final

DESCARGAR



import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Buscaminas0 extends JFrame implements ActionListener{
Buscaminas0 oBuscaminas;
static int tamano = 50;
JButton[][] tableroJuego;
JButton botonReiniciar;
static int tamanoCuadrado = 42;
static FotoBomba objetoFoto;
static int contadorGanar=0;

Buscaminas0(){
setLayout (null);
tableroJuego = new JButton[tamano][tamano];
dibujarTablero();

botonReiniciar = new JButton("Reiniciar");
botonReiniciar.setBounds(20,30+tamanoCuadrado*tamano,100,25);
botonReiniciar.addActionListener(this);
        add(botonReiniciar);

        disponerBombas();
contarBombasPerimetro();
}

private void contarBombasPerimetro() {

for (int fila = 0; fila < tamano; fila++) {
for (int col = 0; col < tamano; col++) {
if(tableroJuego[fila][col].getText().equals("0")==true){
int cant = contarCoordenada(fila,col);
tableroJuego[fila][col].setText(String.valueOf(cant));
}

}
}

}

private int contarCoordenada(int fila, int col) {

int total = 0;

if(fila-1>=0 && col-1>=0){
if(tableroJuego[fila-1][col-1].getText().equals("b")==true){
total++;
}
}
if(fila+1< tamano && col-1>=0){
if(tableroJuego[fila+1][col-1].getText().equals("b")==true){
total++;
}
}
if(fila-1>=0 && col+1<tamano){
if(tableroJuego[fila-1][col+1].getText().equals("b")==true){
total++;
}
}
if(fila+1<tamano && col+1<tamano){
if(tableroJuego[fila+1][col+1].getText().equals("b")==true){
total++;
}
}
if(fila-1>=0){
if(tableroJuego[fila-1][col].getText().equals("b")==true){
total++;
}
}
if(col-1>=0){
if(tableroJuego[fila][col-1].getText().equals("b")==true){
total++;
}
}
if(fila+1<tamano){
if(tableroJuego[fila+1][col].getText().equals("b")==true){
total++;
}
}
if(col+1<tamano){
if(tableroJuego[fila][col+1].getText().equals("b")==true){
total++;
}
}

return total;
}

private void disponerBombas() {
int cantidad = tamano;
do{
int fila = (int) (Math.random()*tamano);
int columna = (int)(Math.random()*tamano);
if(tableroJuego[fila][columna].getText().equals("b")==false){
tableroJuego[fila][columna].setText("b");
cantidad--;
}
}while(cantidad!=0);

}

private void dibujarTablero(){
for (int fila = 0; fila < tamano; fila++) {
for (int col = 0; col < tamano; col++) {
tableroJuego[fila][col]= new JButton("0");
tableroJuego[fila][col].setBounds(20+col*tamanoCuadrado,10+fila*tamanoCuadrado,tamanoCuadrado,tamanoCuadrado);
tableroJuego[fila][col].setBackground(Color.lightGray);
tableroJuego[fila][col].setForeground(Color.lightGray);
// tableroJuego[fila][col].setFont(new Font("Tahoma", Font.PLAIN, 10));
tableroJuego[fila][col].addActionListener(this);
add(tableroJuego[fila][col]);
}
}
}



public static void main(String[] args) {
while(tamano>15){
try{
String tam = JOptionPane.showInputDialog( "Tamaño:");
tamano=Integer.parseInt(tam);
if(tamano>15){
JOptionPane.showMessageDialog(null, "Introduce un numero mas pequeño");
}

}catch(NumberFormatException error){
JOptionPane.showMessageDialog(null, "Eroor");
}
}
Buscaminas0 oBuscaminas = new Buscaminas0();
oBuscaminas.setBounds (0,0,50+20+tamanoCuadrado*tamano,100+tamanoCuadrado*tamano);
oBuscaminas.setResizable(false);
oBuscaminas.setLocationRelativeTo(null);
oBuscaminas.setDefaultCloseOperation(EXIT_ON_CLOSE);
oBuscaminas.setVisible(true);

}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==botonReiniciar){

reiniciar();
setTitle("");
// objetoFoto.dispose()

// objetoFoto=null;

}
for (int fil = 0; fil < tamano; fil++) {
for (int col = 0; col < tamano; col++) {
if(e.getSource()==tableroJuego[fil][col]){
if(tableroJuego[fil][col].getText().equals("b")==true){
desactivarJuego();
setTitle("Has Perdido Boooooooooom!!!!");
JOptionPane.showMessageDialog(null, "Perdiste!!!");
// fil=tamano;
// col=tamano;
objetoFoto = new FotoBomba();

}else{

if(tableroJuego[fil][col].getText().equals("0")==true){
recorrer(fil,col);
tableroJuego[fil][col].setEnabled(false);
}else{
tableroJuego[fil][col].setBackground(Color.white);
tableroJuego[fil][col].setForeground(Color.black);
}

if(contadorGanar>=((tamano*tamano)-(tamano+1))){
desactivarJuego();
setTitle("Has Ganado!!!!");
JOptionPane.showMessageDialog(null, "Ganaste!!!");
// fil=tamano;
// col=tamano;
}

}
contadorGanar++;
}
}

}

}

public void reiniciar() {

for (int fil = 0; fil < tableroJuego.length; fil++) {
for (int col = 0; col < tableroJuego.length; col++) {
tableroJuego[fil][col].setText("0");

tableroJuego[fil][col].setBackground (Color.lightGray);
tableroJuego[fil][col].setForeground (Color.lightGray);

// tableroJuego[fil][col]= new JButton("0");
// tableroJuego[fil][col].setBounds(20+col*tamanoCuadrado,10+fil*tamanoCuadrado,tamanoCuadrado,tamanoCuadrado);
// tableroJuego[fil][col].setBackground(Color.lightGray);
// tableroJuego[fil][col].setForeground(Color.lightGray);
// tableroJuego[fil][col].setFont(new Font("Tahoma", Font.PLAIN, 10));
// tableroJuego[fil][col].addActionListener(this);
tableroJuego[fil][col].setEnabled(true);
// add(tableroJuego[fil][col]);


}

}
contadorGanar=0;
setTitle("");
// dibujarTablero();
disponerBombas();
contarBombasPerimetro();



}

private void desactivarJuego() {
for (int i = 0; i < tamano; i++) {
for (int j = 0; j < tamano; j++) {
tableroJuego[i][j].setForeground(Color.blue);
tableroJuego[i][j].setEnabled(false);
}
}
contadorGanar=0;
}

private void recorrer(int fil, int col) {

if(fil>=0&&fil<tamano&&col>=0&&col<tamano){
if(tableroJuego[fil][col].getText().equals("0")){

tableroJuego[fil][col].setText(" ");
tableroJuego[fil][col].setBackground(Color.white);
recorrer(fil,col+1);
recorrer(fil+1,col);
recorrer(fil,col-1);
recorrer(fil-1,col);
recorrer(fil+1,col+1);
recorrer(fil-1,col+1);
recorrer(fil+1,col-1);
recorrer(fil-1,col-1);


}else{
if(tableroJuego[fil][col].getText().equals("1")){
tableroJuego[fil][col].setBackground (Color.white);
tableroJuego[fil][col].setForeground (Color.GREEN);
}else{
if(tableroJuego[fil][col].getText().equals("2")){
tableroJuego[fil][col].setBackground (Color.white);
tableroJuego[fil][col].setForeground (Color.BLUE);
}else{
tableroJuego[fil][col].setBackground (Color.white);
tableroJuego[fil][col].setForeground (Color.BLACK);
}
}


}
}

}


}










import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class FotoBomba extends JFrame implements ActionListener{
static String nombreIcono="aaa.jpg";
static JButton reiniciar;
FotoBomba(){
setLayout (null);
setSize(200,230);
setUndecorated(true);
setLocationRelativeTo(null);
setVisible(true);
// nombreIcono="images.jpg";
// repaint();
setLocationRelativeTo(null);
// nombreIcono="aaa.jpg";

reiniciar = new JButton("cerrar");
reiniciar.setBounds(0,200,200,28);
reiniciar.addActionListener(this);
add(reiniciar);


}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==reiniciar){
setVisible(false);


}
}
@Override
public void paint(Graphics g){
super.paint(g);
Toolkit t = Toolkit.getDefaultToolkit();
Image imagen = t.getImage(nombreIcono);
g.drawImage(imagen, 0, 0,this.getWidth(), this.getHeight()-30, this.getBackground(), this);
}
}