Thema: Delphi Logik Problem

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Logik Problem

  Alt 2. Feb 2007, 14:59
Also ich will/mache es so:

Ich habe ein Set:

Delphi-Quellcode:
TCollisionKind = (ckNone, ckLeft, ckTop, ckRight, ckBottom);
TCollisionPoints = Set of TCollisionKind;
Ist z.B ckRight im Set dann kann der Spieler nicht mehr nach rechts gehen:

Delphi-Quellcode:
var FCollision: TCollisionPoints;

if (GetAsyncKeyState(VK_RIGHT) < 0) and (not (ckRight in FCollision)) then
begin
 // ...
end;
In TTestSprite (mein Spieler) DoCollision:

Delphi-Quellcode:
procedure TTestSprite.DoCollision(Sprite: TSprite; var Done: boolean);
begin
  inherited DoCollision(Sprite,Done);
  FCollision := GetCollisionPoints(Sprite);
=>

Delphi-Quellcode:
function TTestSprite.GetCollisionPoints(
  ASprite: TSprite): TCollisionPoints;
begin
  // Nix machen wenn man mit dem Hintergrund kollidiert oder mit sich selbst
  if (ASprite is TBackGroundSprite) or (ASprite is TTestSprite) then
    exit;
    
  Result := FCollision;

if (X + Width >= ASprite.X) and (Y + Height >= ASprite.Y) and (Y <= ASprite.Y + ASprite.Height) then
  Result := Result + [ckRight]
else
  Result := Result - [ckRight];

//...

end;
Ich hoffe das sind genug Infos

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat