1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| procedure TFormMain.GestionMurBriques(var NumberOfHits,ValeurHorizontale,ValeurVerticale:Integer);
var
I:Integer;
RectFactice:TRect;
Flag1:boolean;
begin
I:=0;
Flag1:=FALSE;
while (not Flag1) and (I<160) do
begin
if Briques[I].Visible then
begin
//Collision entre la Balle et une Brique
if InterSectRect(RectFactice,Balle.BoundsRect,Briques[I].BoundsRect) then
begin
Flag1:=TRUE;
Inc(NumberOfHits);
case DirectionBalle of
GaucheHaut:DirectionBalle:=GaucheBas;
GaucheBas:DirectionBalle:=GaucheHaut;
DroiteHaut:DirectionBalle:=DroiteBas;
DroiteBas:DirectionBalle:=DroiteHaut;
end;
if ((Balle.Left+(Balle.Width div 2))<(Briques[I].Left+(Briques[I].Width div 3))) then
begin
ValeurHorizontale:=2;
ValeurVerticale:=0;
end;
if (((Balle.Left+(Balle.Width div 2))>(Briques[I].Left+(Briques[I].Width div 3))) and
((Balle.Left+(Balle.Width div 2))<(Briques[I].Left+((Briques[I].Width div 3)*2)))) then
begin
ValeurHorizontale:=0;
ValeurVerticale:=0;
end;
if((Balle.Left+(Balle.Width div 2))>(Briques[I].Left+((Briques[I].Width div 3)*2))) then
begin
ValeurHorizontale:=0;
ValeurVerticale:=2;
end;
Briques[I].NumberOfHits:=Briques[I].NumberOfHits+1;
if (Briques[I].NumberOfHits=Briques[I].NombresDeFrappes) then
Briques[I].Visible:=FALSE;
end;
Inc(I);
end;
end;
end; |
Partager