![]() |
PackMan-Futter-Algorithmus
Hey Leute! :-D
Ich programmiere PackMan und muss das Futter (Schwarze Punkte als TShape) mit dem PackMan überprüfen. Ich habe an Intersect gedacht, aber mit allen 80 Punkten? Das könnte sehr langsam werden... Außerdem muss ich dann noch wissen, was für ein Shape das ist. Was kann man da machen? Wie kann ich prüfen, ob er überschneidet und dann welches Shape möglichst schnell??? mfg Johannes |
AW: PackMan-Futter-Algorithmus
Der Ansatz über Shapes (bzw. Komponenten generell) ist schon extrem ungünstig. Vor allem, weil es dazu verleitet Logik und Darstellung zu sehr zu koppeln, und du merkst gerade, warum das blöd sein kann ;)
Nimm dir eine Klasse TFutter die Position und Radius beinhaltet, Instanzen davon in eine Liste, und du kommst sehr simpel mit einfacher Mathematik weiter. Für die Darstellung einfach selbst ein Bitmap bemalen, und das dann auf den Forumarcanvas blitten. Alles andere ist nur Gefuckel. |
AW: PackMan-Futter-Algorithmus
Danke. Ich versuch's! :-D
|
AW: PackMan-Futter-Algorithmus
trotz rotem Kasten noch als Idee:
Vielleicht kannst Du Deine Shapes in einem Array (X/Y-Position) ablegen und dann zur Laufzeit prüfen, ob in dem Array "unter dem Packman" ein Shape liegt (oder nil ist). Dann müsstest Du natürlich dein gesamtes Spielfeld mit einem Array abdecken. |
AW: PackMan-Futter-Algorithmus
@stahli
kann man doch auch schon alles in der Futterklasse unterbringen... |
AW: PackMan-Futter-Algorithmus
Ja, aber dann muss man die Liste durchsuchen, ob man Futter an der aktuellen Position findet.
Ein Raster-Array bietet direkten Zugriff auf eine bestimmte Stelle. Muss man halt überlegen, was für die aktuelle Anwendung zweckmäßiger ist. |
AW: PackMan-Futter-Algorithmus
Mit TInfo für die allgemeinen Informationen dann:
Delphi-Quellcode:
TFutter=Class(TInfo);
.. .. TWorkArray=Array of Array of TInfo; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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