• Colisões

    Para descobrir se um objeto colidiu com outro você pode usar o método que está presente em todas as classes.

    					//Retorna true se houve colisão, ao contrário, retorna false.
    					public boolean collided(GameObject);
    				

    Também se pode verificar se houve uma colisão usando a classe estática Collision, com o método

    					boolean collided(GameObject obj1, GameObject obj2);
    				

    Exemplo:

    					if( Collision.collided(barcoAmarelo, barcoVermelho) == true)
    						imprime("colidiram"); 
    				

    A classe Collision pode ser usada para verificar colisão entre quaisquer um dos objetos: GameObject, GameImage, Animation, Sprite.

    Exemplo: Verificando colisões entre objetos.

    					package Colisao001;
    
    					import jplay.Animation;
    					import jplay.GameImage;
    					import jplay.Window;
    					import jplay.Sprite;
    
    					/**
    					 * @author Gefersom Cardoso Lima
    					 * Federal Fluminense University
    					 * Computer Science
    					 */
    
    					public class Colisao001
    					{
    						//At the time the bird colliding with the rock it explodes
    						public static void main(String[] args)
    						{
    								Window janela = new Window(800,600);
    
    								GameImage pedra = new GameImage("pedra.png");
    								pedra.x = 396;
    								pedra.y = 63;
    								
    								GameImage ceu = new GameImage("ceu.png");
    								Sprite passaro = new Sprite("passaro.png", 3);
    								passaro.setTotalDuration(360);
    
    								Animation explosao = new Animation("explosao.png",20);
    								explosao.setTotalDuration(1400);            
    								explosao.setLoop(false);//The animation will run only once.
    
    								passaro.x = 100;
    								passaro.y = 460;
    
    								boolean colidiu = false;
    								while(true)
    								{
    										ceu.draw();
    										pedra.draw();
    
    										if (colidiu == false)
    										{
    											passaro.draw();
    											passaro.update();
    											passaro.moveTo(600, passaro.y, 0.8);
    											if (passaro.collided(pedra))
    											{
    												colidiu = true;
    												System.out.println(explosao.width);
    												explosao.x = passaro.x - 70;
    												explosao.y = passaro.y - 50;
    											}
    										}
    										else
    										{
    											explosao.update();
    											explosao.draw();
    										}
    
    										if (explosao.isPlaying() == false && colidiu == true)
    											explosao.hide();
    
    										janela.update();
    										janela.delay(10);
    								}
    						}
    					}						
    			

    UFF - Universidade Federal Fluminense - Institudo de Computação - Ciência da Computação