AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pacman

Ein Thema von Blubbel · begonnen am 8. Feb 2012 · letzter Beitrag vom 14. Feb 2012
Antwort Antwort
Seite 2 von 2     12   
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Pacman

  Alt 8. Feb 2012, 16:17
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:
  public
    constructor Create();
    destructor Destroy(); override;
Das TphGameField kennt die eigene Position auf dem Canvas und die Position der Elemente und sollte deshalb die Berechnung der absoluten Zeichenposition übernehmen.
Das Erzeugen der TphMonster könnte z.B. im Constructor von TphGameField erfolgen, aber garantiert nicht in eine Zeichenfunktion:
Delphi-Quellcode:
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;
Randomize sollte nur an einer Stelle im Programm genau einmal aufgerufen werden.
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:
constructor TphMonster.Create(x, y: Integer);
begin
  inherited Create;
  FPosition.Position.X := x;
  FPosition.Position.Y := y;
end;
Ohne Aufruf einer Zeichenfunktion wird das Monster überhaupt nicht gezeichnet:
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;
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#12

AW: Pacman

  Alt 10. Feb 2012, 09:32
Irgendwie ist hier jetzt was komisch... ich bekomme immer diese meldung
Zitat:
[Pascal Fataler Fehler] phpObjects.pas(6): F2047 Zirkuläre Unit-Referenz auf 'phpObjects'
Wenn ich den Code so änder
Delphi-Quellcode:
    destructor Destroy();
    property Pos: TRect read FPos;
  end;

implementation

uses
  Funktionen;

kommt sowas
Zitat:
[Pascal Fehler] Funktionen.pas(42): E2267 Bei der vorherigen Deklaration von GetNewObjectPosition wurde die Direktive 'overload' nicht angegeben
Das ding ist, die Funktion ist gar kein overload. habe es aus einem anderen Projekt genommen und da war es auch schon keins. Irgendwie hab ich da einen Hänger.
Angehängte Dateien
Dateityp: rar PacManSiel.rar (447,8 KB, 7x aufgerufen)

Geändert von Blubbel (10. Feb 2012 um 09:46 Uhr)
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#13

AW: Pacman

  Alt 10. Feb 2012, 10:50
Kann mir da keiner nen Tipp geben?
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#14

AW: Pacman

  Alt 10. Feb 2012, 12:18
Irgendwie ist hier jetzt was komisch... ich bekomme immer diese meldung [Pascal Fataler Fehler] phpObjects.pas(6): F2047 Zirkuläre Unit-Referenz auf 'phpObjects'
Siehe den Beitrag hier: http://www.delphipraxis.net/124762-f...-referenz.html
Coffeecoder
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Pacman

  Alt 14. Feb 2012, 09:25
Ich habe das Programm ein wenig umgestellt und zumindest lauffähig gemacht.
Angehängte Dateien
Dateityp: zip PacManSiel.zip (6,1 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#16

AW: Pacman

  Alt 14. Feb 2012, 12:33
Danke dir ich gucks mir direkt mal an
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz