Итак, у меня есть приложение, которое успешно перемещает шар (эллипс) влево, вправо, вверх или вниз в зависимости от того, какая кнопка на клавиатуре нажата. Однако у меня возникают проблемы с тем, чтобы мяч двигался под углом. Я пытаюсь сделать это, сказав, что если пользователь держит 2 клавиши направления, мяч пойдет по диагонали. Например, если они нажимают левую клавишу и клавишу вверх, я хочу, чтобы мяч двигался в направлении NorthWest. Если кто-нибудь из вас увидит причину проблемы, я бы очень благодарен за помощь!Использование клавиатуры для перемещения круга под углами в java
Двигатель
class KeyClickListener implements KeyListener
{
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
component.moveCircle(1);
}
else if (e.getKeyCode() == KeyEvent.VK_UP)
{
component.moveCircle(2);
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT)
{
component.moveCircle(3);
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT)
{
component.moveCircle(5);
}
//this is my attempt at telling whether or not the user was holding two keys
else if (e.getKeyCode() == KeyEvent.VK_LEFT && e.getKeyCode() == KeyEvent.VK_UP)
{
component.moveCircle(5);
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
CircleComponent
public void moveCircle(int w)
{
dir = w;
if (dir == 1)
{
y+=20;
repaint();
if (y>=560)
{
dir=2;
}
}
.
.
.
else if (dir == 5)
{
x-=10;
y-=10;
repaint();
if(x<=0)
{
dir=3;
}
}
}
+1 для ключей; ['LinePanel'] (http://stackoverflow.com/a/5797965/230513) является примером. – trashgod