Mi problema es que e creado dos círculos que rebotan por la pantalla y ahora querría que rebotaran entre ellos(cuando un circulo toque contra el otro) e probado de varias maneras pero no doy se que e de comparar la posición de uno con el otro pero no encuentro una manera lógica de hacerlo si alguien me puede echar un cable. Esta hecho en FreePascal (Lazarus).
Program circulo;
uses Graph,Crt;
var
Driver, Modo: Smallint;
x1,y1,r1,x2,y2,r2: Integer;
arriba, derecha, izquierda, abajo: boolean;
Procedure bola (color1,color2: integer);
begin
Setcolor(color1); //1º bola
Circle(x1,y1,r1);
Setcolor(color2); // 2º bola
Circle(x2,y2,r2);
end;
{$IFDEF WINDOWS}{$R circulo.rc}{$ENDIF}
begin
Driver := Vga; { Para pantalla VGA }
Modo := VgaHi; { Modo 640x480, 16 colores }
InitGraph(Driver, Modo, 'c:\tp\bgi'); { Inicializamos }
x1:=160;
y1:=240; //1º bola
r1:=30;
x2:=480;
y2:=240; //2º bola
r2:=30;
//x1:=-4;
//x2:=x2+4;
//y1:=y1+4;
//y2:=y2+4;
arriba:=true;
derecha:=false;
izquierda:=true;
abajo:=false;
while true do
begin
bola(random(16),random(16)); // Pinta bola 1 y bola 2
delay(60); // Espera
bola(black,black); // Pinta bola 1 y dos de negro
if derecha=false then
begin
x1:=x1-9;
end
else // X izquierda derecha
begin
x1:=x1+9;
end;
if arriba=true then // BOLA 1
begin
y1:=y1-6;
end
else // Y arriba abajo
begin
y1:=y1+6;
end;
if izquierda=false then
begin
x2:=x2-10;
end
else // X izquierda derecha
begin
x2:=x2+10;
end;
if abajo=true then // BOLA 2
begin
y2:=y2-5;
end
else // Y arriba abajo
begin
y2:=y2+5;
end;
////////////////////////////////////
if x1<= 0+30 then
begin
derecha:=true;
//x1:=0+30;
end // X izquierda derecha
else if x1>=640-30 then
begin
derecha:=false;
//x1:=640-30;
end; // BOLA 1
if y1<= 0+30 then
begin
arriba:=false;
//y1:=0+30;
end
else if y1>=480-30 then // Y arriba abajo
begin
arriba:=true;
//y1:=480-30;
end;
if x2<= 0+30 then
begin
izquierda:=true;
//x2:=0+30; // X izquierda derecha
end
else if x2>=640-30 then
begin
izquierda:=false;
//x2:=640-30;
end; // BOLA 2
if y2<= 0+30 then
begin
abajo:=false;
//y2:=0+30;
end
else if y2>=480-30 then // Y arriba abajo
begin
abajo:=true;
//y2:=480-30;
end;
end;
Readln; { Esperamos }
CloseGraph { Y se acabó }
end.
Gracias de antemano
Un saludo!!