Java - ayuda batalla naval

 
Vista:

ayuda batalla naval

Publicado por vianey (1 intervención) el 04/11/2011 15:58:32
hola necesito ayuda con un priyecto del juego batalla naval en java hice lo isguiente pero como que no es el resultado deseado:
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Event;
public class Submarino0 extends java.applet.Applet
{
public final long serialVersionUID=1L;
int x,y;
int mar[][]=new int [20][10];
int blancos_computadora;
int blancos_usuario;
public void init()
{
for(int i=0;i<mar.length;i++)
for(int j=0;j<mar[0].length;j++)
mar[i][j]=0;
int a,b,c;
blancos_computadora=0;
blancos_usuario=0;
//compu
do
{
a=(int)(Math.random()*10)-1;
b=(int)(Math.random()*10)-1;//valor aleatorio proviene de la clase math es el metodo random
}while((mar[a][b]!=0)&&(b>0)&&(a<0));
mar[a][b]=2;
c=(int)(Math.random()*10);
if((c%2)==0)
mar[a][b+1] =2;
else
mar[a+1][b]=2;
do
{
a=(int)(Math.random()*10)-5;
b=(int)(Math.random()*10)-5;//valor aleatorio proviene de la clase math es el metodo random
}while((mar[a][b]!=0)&&(b>0)&&(a<0));
mar[a][b]=2;
c=(int)(Math.random()*10);
if((c%2)==0)
mar[a][b+3] =2;
else
mar[a+3][b]=2;
//usuario
do
{
a=(int)(Math.random()*10)+8;
b=(int)(Math.random()*10)-1;//valor aleatorio proviene de la clase math es el metodo random
}while((mar[a][b]!=0)&&(b>0)&&(a>9));
mar[a][b]=2;
c=(int)(Math.random()*10);
if((c%2)==0)
mar[a][b+1]=2;
else
mar[a+1][b]=2;
}


public boolean mouseDown(Event evt, int a , int b)
{

if((a>=0)&&(a<=100)&&(b>=100)&&(b<=200))
{
if(mar[(b-100)/10][a/10]==0)
mar[(b-100)/10][a/10]=1;
if(mar[(b-100)/10][a/10]==2)
{
mar[(b-100)/10][a/10]=3;
blancos_usuario++;
}
}
int x,y;
do
{
x=(int)(Math.random()*10)+9;
y=(int)(Math.random()*10);
}while((mar[x][y]!=1)&&(x>9));
if(mar[x][y]==2)
{
mar[x][y]=3;
blancos_computadora++;
}
else if(mar[x][y]==0)
mar[x][y]=1;
repaint ();
return true;
}
public void paint(Graphics g)
{
g.setColor(Color.BLUE);
for(int i=0;i<=100;i+=10)
g.drawLine(i,100,i,300);
g.setColor(Color.RED);
for(int j=100;j<=300;j+=10)
g.drawLine(0,j,100,j);
for(int i=0;i<mar.length;i++)
for(int j=0;j<mar[0].length;j++)
{
if(mar[i][j]==1)
{
g.setColor(Color.BLUE);
g.fillRect((j*10),(i*10+100),10,10);
}
else if ((mar[i][j]==2)&&(i>9))
{
g.setColor(Color.BLACK);
g.fillRect((j*10),(i*10+100),10,10);
}
else if (mar[i][j]==3)
{
g.setColor(Color.RED);
g.fillRect((j*10),(i*10+100),10,10);
}
}
}
}
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

ayuda batalla naval

Publicado por Renzo (232 intervenciones) el 04/11/2011 17:21:08
Hola Vianey,

no comprendo muy bien tu código

pero según veo en la linea 14 tienes esto

for (int j = 0; j < mar[0].length; j++)

creo que deberia ser

for (int j = 0; j < mar[i].length; j++)


pues supongo que como tienes un doble for quieres recoger todo tu arreglo y al decir mar[0]
solo estas seteando valor a la primera fila del arreglo


Saludos

Espero haberte ayudado

Te invito a visitar mi web: http://www.imagineandd.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar