Fazer bola rebater no canto da tela

Fala pessoal beleza?

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:

http://www.codeshare.io/CXKvs

Esse tutorial explica:
http://pontov.com.br/site/index.php/java/48-java2d/123-a-primeira-animacao

Mas seria bom você ler a série completa:
http://pontov.com.br/site/index.php/java/48-java2d

Seu erro é esse:

px = (-1)*(-px);

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;
}

Obrigado pelas respostas, eu já tentei isso e a bolinha some quando chega no valor máximo…

if ((px < 0) || (px > 800)){ //faz com que a bolinha rebata
px = -px;
}

if ((py < 0) || (py > 500)){ //faz com que a bolinha rebata quando eixo Y for menor que 0
py = -py;
}

ViniGodoy: não tem uma forma mais simples de fazer isso, mais ou menos como eu to tentando fazer?

Você chegou a ler o artigo? Ver a figura?
Só está faltando somar o tamanho das bolinhas no limite superior.

Li sim ViniGodoy, consegui faze-lo funcionar :smiley:
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.

DÚVIDA RESOLVIDA!

Fiz um FOR e consegui fazer o loop!