Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
jede position einer line mit der player pos vergleichen
3. Okt 2004, 09:59
Hallo,
ich habe eine line(moveTo, LineTo) und möchte nun jede pos mit der Player Position vergleichen, ich habe mir dazu folgenden qullcode überlegt:
Delphi-Quellcode:
for i:=0 to High(Leser) do begin
with Leser[i] do begin
if m = 0 then TimeLeser(i); // für einen zeitgesteuerten Leser
if Typ = 0 then begin
GFL.DrawLine(x*16,(y+1)*16,(x)*16,(y+w)*16);
GFL.DrawLine((x+1)*16,(y+1)*16,(x+1)*16,(y+w)*16);
end;
if Typ = 1 then begin
// Hier die colisions abfrage für den player und der line w ist die länge, die ändert sich alle paar sekunden
if (Player.X = X) and (Player.Y =Y) and (Player.X=X+W) and (Player.y =y+w ) then Player.is_C:=True;
GFL.DrawLine(x*16,(y+1)*16,(x+w)*16,(y+w)*16);
GFL.DrawLine((x+1)*16,(y+1)*16,((x+1)+w)*16,(y+w)*16);
end;
if Typ = 2 then GFL.DrawLine(x*16,(y+1)*16,(x-w)*16,(y+w)*16);
end;
end;
procedure TLeser.CheckKey(Key:Word;Vaule:Boolean);
var
px,py,i:Integer;
C,ismove:Boolean;
begin
c:=False; ismove:=False;
Tasten[Key]:=Vaule;
px:=player.x; py:=player.y;
if Tasten[VK_LEFT] = True then begin ismove:=True; px:=px-1; end;
if Tasten[VK_RIGHT] = True then begin ismove:=True; px:=px+1; end;
if Tasten[VK_UP] = True then begin ismove:=True; py:=py-1; end;
if Tasten[VK_DOWN] = True then begin ismove:=True; py:=py+1; end;
if Map[px,py].typ <> None then c:=True;
if (px < 0 ) or (py < 0 ) then c:=True;
if isMove = True then begin
for i:=0 to High(Leser) do begin
with Leser[i] do begin
if TYP = 0 then begin
if (PX >= X) and (PY >=Y) and (PX <=X) and (PY <= Y+w) then begin
c:=True;
Player.x:=1;
Player.y:=3;
break;
end;
end;
// hier wird nachgeschaut ob eine collisions stattgefunden hat
if TYP = 1 then c:=player.is_C;
end;
end;
end;
// und nur wenn es keine collisions gegeben hat, werden die neuen positions angaben gesetzt !
if c = False then begin
player.x:=px;
player.y:=py;
end;
end;
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|
|
Zitat
|