I have the following:
public class Bullet {
public enum Direcao { UP,DOWN,LEFT,RIGHT };
// Posição do tiro em pixels.
private int x,y;
// Direção do tiro.
private Direcao direção;
// Este tiro está ativo?
private boolean estáAtivo;
// Tamanho do tiro em pixels.
private int iw,ih;
// Imagem do tiro.
private Image icon;
// área do painel do jogo (para controlar movimento).
private Dimension area;
// Construtor, inicializa atributos, cria a bala.
public Bullet(Dimension a,Direcao dir, int x,int y){
area = a;
icon = new ImageIcon(getClass().getResource("/gamejava.Sprites/bullet.png")).getImage();
iw = icon.getWidth(null);
ih = icon.getHeight(null);
// x e y passados direto como argumentos
this.x = x;
this.y = y;
direção = dir;
estáAtivo = true;
}
// Método que movimenta a bala.
public void move(){
if (!estáAtivo) return;
switch(direção){
case LEFT:
{
x -= 3; if (x < 0) estáAtivo = false; break;
}
case RIGHT:
{
x += 3; if (x > area.width) estáAtivo = false; break;
}
case UP:
{
y -= 3; if (y < 0) estáAtivo = false; break;
}
case DOWN:
{
y += 3; if (y > area.height-100) estáAtivo = false; break;
}
}
}
and also:
public class Bomb {
public enum Direcao { UP,DOWN,LEFT,RIGHT };
// Posição da bomba em pixels.
private int x,y;
// Esta bomba está ativa?
private boolean estáAtivo;
// Tamanho da bomba em pixels.
private int iw,ih;
// Imagem da bomba.
private Image icon;
// área do painel do jogo (para controlar movimento).
private Dimension area;
// Construtor, inicializa atributos, cria a bomba.
public Bomb(Dimension a,int x,int y){
area = a;
icon = new ImageIcon(getClass().getResource("/gamejava.Sprites/bomb.png")).getImage();
iw = icon.getWidth(null);
ih = icon.getHeight(null);
// x e y passadas diretamente como parâmetros
this.x = x;
this.y = y;
estáAtivo = true;
}
// Método que movimenta o shooter, verificando se está na área válida.
public void move(Direcao dir){
if (dir == null) return;
switch(dir){
case LEFT:
{ x--;
if (x < iw/2) x = iw/2;
break; }
case RIGHT:
{ x++; if (x > area.width-iw/2) x = area.width-iw/2; break; }
case UP:
{ y--; if (y < area.height-100+ih/2) y = area.height-100+ih/2; break; }
case DOWN:
{ y++; if (y > area.height-ih/2) y = area.height-ih/2; break; }
}
}
// Método que movimenta a bomba.
public void move(){
if (!estáAtivo) return;
y = y-3;
if (y <= 0) estáAtivo = false;
}
// Método que desenha a bomba em um contexto gráfico.
public void draw(Graphics g){
if (estáAtivo) g.drawImage(icon,x-iw/2,y-ih/2,null);
}
// Precisamos saber se esta bomba está ativa!
public boolean estáAtivo() {
return estáAtivo;
}
// Verificamos se a bomba está perto de um Invader
public boolean acertouEm(Invader i){
int ox = i.getX(); int oy = i.getY();
return (Math.sqrt((x-ox)*(x-ox)+(y-oy)*(y-oy)) < 25);
}
// Explodimos a bomba (retornando bullets).
public ArrayList<Bullet> explode(){
ArrayList<Bullet> novasBalas = new ArrayList<Bullet>(4);
novasBalas.add(new Bullet(area, Direcao.LEFT, x, y));
novasBalas.add(new Bullet(area, Direcao.RIGHT, x, y));
novasBalas.add(new Bullet(area, Direcao.UP, x, y));
novasBalas.add(new Bullet(area, Direcao.DOWN, x, y));
estáAtivo = false;
return novasBalas;
}
}
Two separate classes, Bullet
and Bomb
. In the Bomb class, the explode method is showing the following error in my NetBeans:
How do I pass that parameter from Direcao
to the other class? Ali says it's incompatible.