Colisão entre dois objetos

Como detecto colisão e escrevo na tela que ocorreu uma colisão ?

package Colisao;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

public class Desenho {

private static Desenho singleton;

public void desenhar() {

	JanelaDesenho objeto = JanelaDesenho.getSingleton();
	Canvas c = objeto.getCanvas();
	Graphics g = c.getGraphics();
	int i = 0;
	int retangulo1 = 0;
	int retangulo2 = 560;
	int pos1 = 0;
	int pos2 = 0;
	for(i = 0; i < 560;i++) {
				
	try {
		
		g.setColor(Color.BLACK);
		g.fillRect(retangulo1 + i, 0, 100, 100);
		pos1 = retangulo1 + i;			
		
		g.setColor(Color.RED);
		g.fillRect(retangulo2 - i, 0, 100, 100);
		pos2 = retangulo2 - i;
		
		Thread.sleep(20);
	
		g.setColor(Color.WHITE);
		g.fillRect(retangulo1 + i, 0, 100, 100);
		
		g.setColor(Color.WHITE);
		g.fillRect(retangulo2 - i, 0, 100, 100);
		
		System.out.println("pos1 " + pos1 + " " + " pos2 " + pos2);
		
		if(pos1 == pos2) {
			
			System.out.println("Colisão !");
		}			
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}		
				
	}
	
}	

public static Desenho getSingleton(){
	
	if(singleton == null) {
		
		singleton = new Desenho();
	}
	return singleton;
}	

}

Calcular a colisão entre objetos depende da geometria de cada objeto.
No seu exemplo aparentemente você quer calcular a colisão entre dois retângulos.

Você tem essas duas variáveis:

int retangulo1 = 0;
int retangulo2 = 560;

Essas duas variáveis representam um retângulo?
Há informação o suficiente nelas para indicar a coordenada x, y e a altura e largura do retângulo?
Receio que não.

Se você não quer utilizar a classe Rectangle já existente, sugiro que você crie sua própria classe Retangulo com os atributos x, y, largura e altura.
Crie na classe Retangulo um método conforme abaixo:

public boolean colidiuCom(Retangulo outro) {
    // Com os atributos `x, y, largura e altura` você consegue calcular
    // se um `Retangulo`colidiu com outro.
    // Faça um desenho num plano cartesiano
    //  que fica fácil visualizar como implementar o algoritmo.
}
1 curtida