sexta-feira, 29 de outubro de 2010

Posição dos Objetos na Arena - OK

>por Matheus

Olá!
Como apresentado no post da semana passada, durante a semana trabalhei para que o usuário conseguisse alterar a posição dos objetos (Robô e Bola) fazendo uso do mouse, ao invés de utilizar posições fixas para o posicionamento. Para isso, utilizei implentações como MouseMotionListener e MouseListener. Segue abaixo o código em Java elaborado:

public boolean validaPosicaoMouse(MouseEvent e, int obj)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(obj == 1)
{
if (((xMouse <= robo1.x+2) && (xMouse >=robo1.x -2)) && ((yMouse <= robo1.y+2) && (yMouse >=robo1.y -2)))
{
return true;
}
}
if(obj == 2)
{
if (((xMouse <= robo2.x+2) && (xMouse >=robo2.x -2)) && ((yMouse <= robo2.y+2) && (yMouse >=robo2.y -2)))
{
return true;
}
}
if(obj == 0)
{
if (((xMouse <= bola.x+2) && (xMouse >=bola.x -2)) && ((yMouse <= bola.y+2) && (yMouse >=bola.y-2)))
{
return true;
}
}

return false;

}

@Override
public void mouseDragged(MouseEvent e)
{
xMouse = (int)e.getPoint().getX();
yMouse = (int)e.getPoint().getY();
xMouse = (int)(xMouse / escalaCmPixel);
yMouse = (int)(yMouse / escalaCmPixel);
yMouse = tamYCm - yMouse;

if((emCima == 1) || (emCima == 0))
{
atualizaPosicaoMouse(xMouse, yMouse);
}
}

public void atualizaPosicaoMouse(int x, int y)
{
//obj 1 = robo1 || 2 = robo2 || 0 = bola
if(emCima == 1)
{
robo1.x = x;
robo1.y = y;
repaint();
return;
}
if(emCima == 0)
{
bola.x = x;
bola.y = y;
repaint();
return;
}
}



@Override
public void mousePressed(MouseEvent e) {
if((validaPosicaoMouse(e, 1)) && (Funcoes.executando==0))
{
emCima = 1;
return;
}
if((validaPosicaoMouse(e, 0)) && (Funcoes.executando==0))
{
emCima = 0;
return;
}

}

@Override
public void mouseReleased(MouseEvent e) {
emCima = -1;
}


Até a próxima!

Matheus

Nenhum comentário:

Postar um comentário