Verificare la collisione è facile: due circonferenze si intersecano se la distanza tra i centri è minore della somma dei raggi.
codice:
int collisione(palla_t palla1, palla_t palla2)
{
if ( distanza(palla1.centro, palla2.centro) < (palla1.raggio + palla2.raggio) )
return 1;
else
return 0;
}
La funzione che vuoi tu è semplice (pseudocodice):
codice:
FOREACH (palla1 in lista_palle)
{
FOREACH (palla2 in lista_palle)
{
if (palla1 == palla2) continue;
if (collisione(palla1, palla2))
{
cambia_colore(palla1);
elimina_palla(palla2);
}
}
}