Java - Programar en java un applet con buscaminas + conexion a my sql

   
Vista:

Programar en java un applet con buscaminas + conexion a my sql

Publicado por Esteban efernandez2009@alu.uct.cl (1 intervención) el 18/06/2011 03:03:02
Muy buenas noches a todos! es mi primera consulta espero puedan ayudarme y asi insentivarme para poder ayudarles en alguna oportunidad desde ya muchas gracias :)

Tengo el siguiente programa en Java sobre un buscaminas(bastante basico) lo tengo casi listo pero me falla en algo... no logro entender que sucede....

Cuando uno hace click en algun cuadrado, reviza la cantidad de bombas y pone el numero de bombas que hay al rededor, pero si colocas el click justo donde hay una bomba, la marca con X y pone todas de color rojo( las que tenian bombas) hasta ahi todo bien, pero cuando no tiene NINGUNA BOMBA al rededor falla el juego....

adjunto el codigo del buscaminas!

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Buscamina extends Applet implements ActionListener
{
private Button b[][]=new Button[5][5];//matris de botones
private Button Comenzar = new Button("Comenzar");//boton comenzar
private Button Otravez = new Button("Otra vez");//boton volver a jugar
private int A[][]=new int[5][5];//matriz con bombas
private int i,j,x=150,y=80,f,c,aux,v;//variables varias
private Color Z = new Color(211,211,211);//color gris
private Color Y = new Color(160,82,45);//color cafe
private Color X = new Color(198,226,255);//color celeste
private Image F[]=new Image[5];//arreglo de imagenes
private AudioClip SonidoActual;//sonido
private boolean w;//variable para determinar si se gano o no


public void init()
{
this.setLayout(null);
this.setSize(400,283);//configuracion de pantalla por defecto
Comenzar.setBounds(260,200,100,30);//modificacion de posicion y tamaño de boton comenzar
Comenzar.setBackground(X);//modificacion a color celeste del boton comenzar
Otravez.setBounds(260,240,100,30);//modificacion de posicion y tamaño de boton otravez
Otravez.setBackground(Y);//modificacion a color cafe de boton otravez
Comenzar.addActionListener(this);//agregar actionListener a boton comenzar
Otravez.addActionListener(this);//agregar actionListener a boton otravez
add(Comenzar);//agregar boton comenzar a la pantalla
add(Otravez);//agregar boton otravez a la pantalla

//setBackground(Color.black);

for(i=0;i<5;i++){
for(j=0;j<5;j++){
A[i][j]=(int)(Math.random()*5);
b[i][j]=new Button();
b[i][j].setBounds(x,y,20,20);
x=x+20;
b[i][j].setBackground(Z);
b[i][j].addActionListener(this);
add(b[i][j]);
}
x=150;
y=y+20;
}
w=false;

}

public void paint(Graphics g){
F[1]=getImage(getCodeBase(),"fondo.jpg");
if(w==false){
g.drawImage(F[1],0,0,this);
}else{
F[2]=getImage(getCodeBase(),"reset.jpg");
g.drawImage(F[2],0,0,this);
}

}

public void actionPerformed(ActionEvent e){

for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(e.getSource()==b[i][j]){
if(A[i][j]!=1){
BBC(i,j);
}else{
mostrarBombas();
}
}
}
}

if(e.getSource()==Comenzar){
comenzar();
}

if(e.getSource()==Otravez){
re();
}



}

//aqui busca las bombas

public void BBC(int i, int j){
v=0;
if( (i>0) && (j>0) && (A[i-1][j-1]==1) ) v++;
if( (i>0) && (A[i-1][j] ==1) ) v++;
if( (i>0) && (j<4) && (A[i-1][j+1]==1) ) v++;
if( (j>0) && (A[i][j-1] ==1) ) v++;
if( (j<4) && (A[i][j+1] ==1) ) v++;
if( (i<4) && (j>0) && (A[i+1][j-1]==1) ) v++;
if( (i<4) && (A[i+1][j] ==1) ) v++;
if( (i<4) && (j<4) && (A[i+1][j+1]==1) ) v++;

marcarbuenas(i,j);

//se supone que si no encontro ninguna debe devolver el metodo para todos los cuadros de alrededor pero aqui falla...

if(v==0){
BBC(i-1, j-1);
BBC(i-1,j);
BBC(i-1, j+1);
BBC(i,j-1);
BBC(i,j+1);
BBC(i+1,j-1);
BBC(i+1,j);
BBC(i+1,j+1);
}
}

public void marcarbuenas(int i, int j){
b[i][j].setBackground(Color.white);
if(v==0){
b[i][j].setLabel(" ");
}else{
b[i][j].setLabel(Integer.toString(v));
}

}

public void mostrarBombas(){

for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(A[i][j]==1){
b[i][j].setBackground(Color.red);
b[i][j].setLabel("X");
}
}
}

w=true;
SonidoActual.stop();
SonidoActual=getAudioClip(getCodeBase(), "Crash.wav");
SonidoActual.play();
repaint();


}

public void comenzar(){

SonidoActual=getAudioClip(getCodeBase(), "tictac.wav");
SonidoActual.play();
repaint();

}

public void re(){

SonidoActual.stop();

w=false;

for(i=0;i<5;i++){
for(j=0;j<5;j++){
A[i][j]=(int)(Math.random()*5);
b[i][j].setBackground(Z);
b[i][j].setLabel("");
}
}

repaint();

}
}

ese es el codigo del programa, ademas de ello debo conectarlo a una base de datos en MySql mediante Bluej
( trabajo con el, ocuparia otras erramientas pero mi pc es de pocos recursos)

desde ya muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder