Zmienne dirX
i dirY
są wyliczane wcześniej
int speed = (int) Math.max(1.0, Math.hypot(dirX, dirY));
calculateMove(speed);
//-------------
private void calculateMove(int speed)
{
delay = Math.min(1000/speed, 25); //niekiedy tu jest rzucany wyjątek java.lang.ArithmeticException: / by zero
...
W czasie pisania postu udało mi się wyjaśnić tajemnicze zero w mianowniku. Zostawiam wątek jako zagadkę.