![]() |
AW: Pacman
Der komplette Quelltext liegt nicht vor.
Die Änderungsvorschläge basieren also nur auf Vermutungen oder sind allgemeiner Natur: Den Destructor Detroy immer mit override kennzeichnen, sonst wird dieser durch Free nicht aufgerufen.
Delphi-Quellcode:
Das TphGameField kennt die eigene Position auf dem Canvas und die Position der Elemente und sollte deshalb die Berechnung der absoluten Zeichenposition übernehmen.
public
constructor Create(); destructor Destroy(); override; Das Erzeugen der TphMonster könnte z.B. im Constructor von TphGameField erfolgen, aber garantiert nicht in eine Zeichenfunktion:
Delphi-Quellcode:
Randomize sollte nur an einer Stelle im Programm genau einmal aufgerufen werden.
procedure TphGameField.DrawMonsters(ACanvas: TCanvas);
var i, x, y: Integer; begin for i := 0 to high(FMonsterArray) do begin if Assigned(FMonsterArray[i]) then begin // (Position des Monsters - eigener Scrollposition) * Feldgrösse // Feldgrösse nur multiplizieren, wenn die Positionen nur den Feldindex beinhalten x := (FMonsterArray[i].Position.x - FPosition.x) * FSize; y := (FMonsterArray[i].Position.y - FPosition.y) * FSize; FMonsterArray[i].Draw(ACanvas, Rect(x, y, x + FSize, y + FSize)); end; end; end; Warum ist der Aufruf des geerbten Constructor auskommentiert? Die Anfangsposition der Monster zu setzen, ist sicher die Aufgabe des TphGameField. Schließlich kennt nur das Spielfeld seine Größe und die Position anderer Monster, Spieler und Hindernisse. Am besten gleich nach dem Erzeugen oder wie bereits vorgeschlagen als Parameter.
Delphi-Quellcode:
Ohne Aufruf einer Zeichenfunktion wird das Monster überhaupt nicht gezeichnet:
constructor TphMonster.Create(x, y: Integer);
begin inherited Create; FPosition.Position.X := x; FPosition.Position.Y := y; end;
Delphi-Quellcode:
procedure TphMonster.Draw(ACanvas: TCanvas; ARect: TRect);
begin ACanvas.brush.color := clRed; ACanvas.Ellipse(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom); end; |
AW: Pacman
Liste der Anhänge anzeigen (Anzahl: 1)
Irgendwie ist hier jetzt was komisch... ich bekomme immer diese meldung
Zitat:
Delphi-Quellcode:
destructor Destroy();
property Pos: TRect read FPos; end; implementation uses Funktionen; kommt sowas Zitat:
|
AW: Pacman
Kann mir da keiner nen Tipp geben?
|
AW: Pacman
Zitat:
![]() |
AW: Pacman
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe das Programm ein wenig umgestellt und zumindest lauffähig gemacht.
|
AW: Pacman
Danke dir ich gucks mir direkt mal an
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz