Objekte von hinten nach vorne zeichnen (2D)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Entenfels

Betreff: Objekte von hinten nach vorne zeichnen (2D)

BeitragDi, Mai 05, 2009 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich habe folgendes Problem Embarassed :
Ich habe ein Type mit Personen mit den Feldern x und y. Diese Personen bewegen sich jedoch frei im Raum und stehen voreinander rum, etc. …
Wie kann ich diese Elemente nun so sortieren, dass ich sie nach y gestaffelt auf den Bildschirm male?
Also ich meine, so dass die Personen vorne im Bild die hinteren überlappen Question
Vielen Dank im Voraus für die Antwort!

Grüße
Entenfels

Skabus

BeitragDi, Mai 05, 2009 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die die am weitesten hinten sind zuerst zeichnen und die die am weitesten vorn zuletzt.

Am einfachsten ginge das indem du alle Y-Werte aller Personen aufnimmst(z.B. per Array) und sortierst
diese dann, dann lässt du in deiner Anzeigeroutine dementsprechend die Person an der Stelle anzeigen,
die der Sortierreihenfolge entspricht....



MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

Tankbuster

BeitragDi, Mai 05, 2009 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For Y=1 to GraphicsHeight() ;Vorher am besten in einer Variable speichern
For P.Person=each Person
if P\y=Y then DrawImage Person,P\x,P\y,0
Next
Next


PS: Ist natürlich nicht der intelligenteste weg, und ein sehr Rechenintensiver, aber ein einfacher ^^
Twitter
Download Jewel Snake!
Windows|Android

Entenfels

BeitragMi, Mai 06, 2009 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank @Skabus+Tankbuster! Very Happy Very Happy Very Happy
Aber meine Frage ist: Gibt es noch einen schnelleren Weg oder einen, der nicht jedes Frame von ganz vorne gestartet werden muss?
Trotzdem vielen Dank für die Antworten. Sie haben mich auf jeden Fall weitergebracht! *jubel*
Gruß

Entenfels
Die Details sind zu 94 Prozent zutreffend, bei sechs Prozent unvermeidbarer Extrapolation.
-Artemis Fowl von Eoin Colfer

ozzi789

BeitragMi, Mai 06, 2009 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Du sortierst alle mit einem BubbleSort Algo o.ä
Wenn sich nun ein Objekt bewegt (oder alle 100 ms) wird das ganze wiederholt

Sollte nicht so sehr Performance fressend sein Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Skabus

BeitragDo, Mai 07, 2009 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Entenfels hat Folgendes geschrieben:
Vielen Dank @Skabus+Tankbuster! Very Happy Very Happy Very Happy
Aber meine Frage ist: Gibt es noch einen schnelleren Weg oder einen, der nicht jedes Frame von ganz vorne gestartet werden muss?
Trotzdem vielen Dank für die Antworten. Sie haben mich auf jeden Fall weitergebracht! *jubel*
Gruß

Entenfels


Es wird kaum nen schnelleren Weg geben...
Du wirst ja sicher pro Anzeigezyklus alle deine Personen zeichnen,
dann wird dir nix anderes übrig bleiben als sie zu sortieren und
dann in sortierter Reihenfolge anzuzeigen...

Ich denke mal da wird kaum nen schnelleren Weg geben.
Ist auch nicht kompliziert denke ich....


Freut mich dass ich helfen konnte Very Happy

MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

Goodjee

BeitragDo, Mai 07, 2009 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
sicher geht es schneller:

du erstellst deine player gleich an der richtigen position in der liste, mittels insert, after, before, last und first

immer wenn du ein neues objekt erstellst musst du umsortieren und immer wenn du eins bewegst musst du gucken ob die position nichmehr passt und es solange nach vorne/hinten schieben bis es wieder passt

das ganze braucht kaum rechenleistung, da in eine sortierte menge einfügen viel schneller geht als sortieren
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group