Colisão entre objetos

Gente, é o seguinte, estou tentando fazer um jogo como Pong. Então tem duas raquetes e uma bolinha, como é que eu faço pra que as raquetes e as bolinhas tenham capacidade de colisão, atrito ou fricção?

[size=18]http://www.pontov.com.br/site/[/size]

Veja esse port: http://programadorprofissional.blogspot.com.br/2012/08/verificando-colisoes-entre-sprites.html

att

[quote=Gustavo Marques]Veja esse port: http://programadorprofissional.blogspot.com.br/2012/08/verificando-colisoes-entre-sprites.html

att[/quote]

Quando eu escrevo Sprite no NetBeans ele diz Illegal Start Of Expression - Symbol: class Sprite; Location: class Pad1

Um pouco exagerado para o pong, mas se você quiser uma física mais realista: http://www.jbox2d.org/

Posta o código para vermos o erro. O netbeans exibe uma ‘lampada’ na linha do erro, clica nela que ele lhe dará sugestões de como arrumar o erro.

att

Eu retirei o “sprite”, vou colocar o código só com instâncias, estou tendo problemas tanto em fazer assim como em entender, como fazer o getX(); e getY(); de um objeto.


import java.awt.*;

public class Pad1 {
    Image ipad1;
    int pad1pos;
    int height;
    int width;
    int x;
    int y;
    Graphics g;
   
    
    public void Paint(Graphics g){
         Graphics2D g2d = (Graphics2D) g.create();
    
         g2d.drawImage(ipad1, x, y, null);
    
    g2d.dispose();
    
    }
    
    public Pad1(Pad1 pad1){
    
    width = ipad1.getWidth(null);    
    height = ipad1.getHeight(null);
    ipad1.getGraphics();
    
    
    

Como manda a Orientação a objetos criei a classe para uma das ‘raquetes’ e parte do cenário.

Esse vídeo vai te ajudar! Ele já começa falando sobre colisões!

Muito legal, me ajudou a começar a entender esse mundo de jogos em java!

http://www.youtube.com/watch?v=pd74InzGmVQ&feature=context-gfa

se quiser ver o inicio dessa discursão sobre colisão é esse link:

http://www.youtube.com/watch?v=LwTfhP5d480

Yann Braga tá de parabéns!

[quote=SandroSoftwares]Esse vídeo vai te ajudar! Ele já começa falando sobre colisões!

Muito legal, me ajudou a começar a entender esse mundo de jogos em java!

http://www.youtube.com/watch?v=pd74InzGmVQ&feature=context-gfa

se quiser ver o inicio dessa discursão sobre colisão é esse link:

http://www.youtube.com/watch?v=LwTfhP5d480

Yann Braga tá de parabéns!

[/quote]

Concordo, eu fiz o seguinte:

public class pad1{
 private int x, y;
 private int larg, alt;
 private Image imagem;
 private boolean isVisible;

 public pad1(){    
 
    ImageIcon icon = new ImageIcon("\iPad1.png");
    imagem = icon.getImage(); 
 
    this.larg = imagem.getWidth(null);
    this.alt = imagem.getHeight(null);

	x = 2;
	y = 250;
	
 /*(...)mais coisas até fim da classe*/

Uma hora vai ficar um método assim:

public Rectangle getBounds(){
	return new Rectangle(x, y, larg, alt);
    }

Mas já vi pessoas que não declaram o valor de x ou y, nem a largura (larg) e altura (alt) [escrevi por preguiça :)] e declaram respectivos valores no hora:
Exemplo:

 personagem.getBounds(new Rectangle(1, 2, 3, 4));  

Qual dessas opções é correta, se são as duas, qual é a mais fácil?
Outra coisa que não entendo é o que significa x ou y, são coordenadas, mas que letra representa a vertical (coluna), e que letra representa a horizontal (linha)?

é o seguinte, eu entendi assim:

x e y são coordenadas.

altura e largura é provavelmente usada para formar o retângulo daquela figura.

logo eu passo as coordenadas de onde o objeto está com x e y, e peço para que o retângulo seja formado em volta da figura pela altura e largura.

se o seu objeto sempre vai estar numa coordenada fixa não vejo problema em colocar diretamente os valores de x e y, mas se for em locais variáveis deve usar logicamente estas variáveis… (criando outro método para modificar as coordenadas)… no exemplo ele criou o método mexer() que modifica essas coordenadas da nave…

para fazer andar as coordenadas ele criou outras coordenadas para incremento e decremento:

dx //aumenta ou diminue x a depender da tecla precionada pelo jogador
dy //aumenta ou diminue y a depender da tecla precionada pelo jogador

 public void keyPressed(KeyEvent tecla) {
        int codigo = tecla.getKeyCode();


        if (codigo == KeyEvent.VK_UP) {
            dy = -2;

        }
        if (codigo == KeyEvent.VK_DOWN) {
            dy = 2;

        }

        if (codigo == KeyEvent.VK_LEFT) {
            dx = -2;

        }
        if (codigo == KeyEvent.VK_RIGHT) {
            dx = 2;

        }

    }

suponhamos que na primeira vez o jogador precionou SETA PRA CIMA (UP).

o evento de teclado é capturado e o que ele faz?

Primeiramente lembre-se do seguinte: no caso do jogo da nave o ponto ZERO DE Y é a parte de cima da tela do seu jogo e o PONTO ZERO DE X daquele jogo é o lado esquerdo inicial da tela.

Quando é UP ele decrementa y (que é verticalmente) ou seja, se decrementa verticalmente o objeto sobe… logo ele vai-se chegando mais pra perto da origem (ponto zero de y que é em cima) pois no metodo mexer está codificado da seguinte forma:

[code]

public void mexer() {

    x += dx; 
    y += dy; // y = 100-2 ficando 98 ... SUBIU !!!!

 
}[/code]

Cara, me deste uma luz aqui, só tenho a agradecer!!

Bom, outa coisa, o Java tem a noção de gravidade? ou fricção jogar a bola numa velocidade x e fazer com que ela retorne a uma velocidade maior?

Aí pessoal, a todos vocês que me responderam e me auxiliaram, fico grato, e… bom aqui está o meu Pong!

Divirtam-se!!

http://sdrv.ms/YiqOwo