Tenho um trabalho em java para fazer, eu tenho que fazer com que uma bolinha rebata em todos os lados da tela, estou usando o Netbeans para simular a animação, só que não sei como faço para fazer a bolinha rebater no lado direito e baixo da tela, no lado esquerdo e em cima eu consegui, basta dizer que quando eixo X e Y forem menor que 0 ele inverte o sinal…assim funcionou, porém essa lógica não funciona para os eixos máximos(X = 1440px e Y = 800px) no meu caso…alguém tem alguma ideia de como posso fazer isso?
segue o código:
Ao multiplicar -px por -1 você inverte o sinal duas vezes, que é a mesma coisa que não inverter o sinal. De maneira simples, o sentido do movimento deve ser invertido sempre que a bola atinge um dos cantos da tela:
if (px < 0 || px > 800 =){ //faz com que a bolinha rebata
px = -px;
}
Li sim ViniGodoy, consegui faze-lo funcionar
Segue o o código que usei para fazer as colisões…
[code]if (px < 0){ //faz com que a bolinha rebata quando eixo X for menor que 0
px = -px;
} else if ((px+tamBola) > tamTelaX){ //faz com que a bolinha rebata quando eixo X for maior que tamTelaX
px = (tamTelaX - px) + tamTelaX - 50;
}
if (py < 0){ //faz com que a bolinha rebata quando eixo Y for menor que 0
py = -py;
} else if ((py + tamBola) > tamTelaY){ //faz com que a bolinha rebata quando eixo Y for maior que tamTelay
py = (tamTelaY - py) + tamTelaY - 70;
}[/code]
Só que estou com um próximo problema, fazer disso um loop, para sempre ficar rebatendo… pois esta rebatendo apenas uma vez, tentei usar um while mas da erro e nem executa… com while ficou assim
int loop = 1;
while (loop = 1){
if (px < 0){ //faz com que a bolinha rebata quando eixo X for menor que 0
px = -px;
} else if ((px+tamBola) > tamTelaX){ //faz com que a bolinha rebata quando eixo X for maior que tamTelaX
px = (tamTelaX - px) + tamTelaX - 50;
}
if (py < 0){ //faz com que a bolinha rebata quando eixo Y for menor que 0
py = -py;
} else if ((py + tamBola) > tamTelaY){ //faz com que a bolinha rebata quando eixo Y for maior que tamTelay
py = (tamTelaY - py) + tamTelaY - 70;
}
}
só que a tela fica preta e trava a animação…alguém sabe como posso implementar nesse código.