Bild von oben nach unten laden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Bild von oben nach unten laden

Beitrag von FosJonas »

wie lade ich ein bild das zuerst die grafiken die oben sind geladen werden und dann die unten sind? Also die X position. Es sind einheiten also grafiken die sich bewegen.

wäre nett wen ihr mir weiter helfen würdet.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Bin jetzt nicht ganz sicher, aber meinst Du zufällig sowas hier?

Bild
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Beitrag von FosJonas »

Nein, ich meine wen z.b. ein objekt auf 200,300 ist und das andere auf 100,300 soll das mit 100,300 zuerst geladen werden. nur das ich ganz viele objekte habe.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Okay dann mußt Du jetzt nur erzählen was Du mit "laden" meinst. Meinst Du evtl. anzeigen, und zwar so, daß sie sich gegenseitig "korrekt" überdecken?
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Beitrag von FosJonas »

Ja sie sollen sich "korekt" überdecken. also so das die untere unit im vordergrund ist und die hintere eben nicht.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Okay dann mußt Du die Objekte sortieren.
Wie hast Du Deine Objekte gespeichert? Eine gängige Methode wäre es, die Landschaft in einem oder zwei Arrays zu haben (ein GroundLayer und ein TopLayer) und die beweglichen Objekte in einer LinkedList.

Dann gehst Du wie folgt vor:
Du zeichnest als erstes Deinen GroundLayer (also den Erdboden). Anschließend zeichnest Du zeilenweise den TopLayer (da sind Bäume und Mauern usw. drin), aber zeichnest gleichzeitig auch die entsprechenden Objekte aus der Liste.
Und zwar fängst Du erstmal mit der Liste an. Diese sortierst Du erstmal mit SortList(), danach nimmst Du Dir das erste Objekt und zeichnest es NUR DANN, wenn es so weit oben ist, daß es noch hinter den festen Objekten aus der aktuellen TopLayer-Zeile steht. Wenn Du es gezeichnet hast, nimmst Du das nächste Objekt und schaust wieder, ob Du es zeichnen mußt. Das machst Du so lange, bis Du auf ein Objekt stößt, das zu weit unten ist, als daß Du es noch zeichnen dürftest. In solch einem Fall zeichnest Du dann einfach die aktuelle TopLayer-Zeile. Danach geht's wieder mit der Liste weiter.

Also grob formuliert:

Code: Alles auswählen

NewList objects.Object()    ; unsere Liste
#TILE_HEIGHT = 32           ; Höhe eines Feldes
#MAP_HEIGHT = 128           ; Höhe der Karte (Anzahl der Felder in Y-Richtung)

;...

FirstElement(objects())     ; wir springen zum ersten Element

For i = 0 to #MAP_HEIGHT

    While objects()\y < i * #TILE_HEIGHT
        ; ... -> Objekt zeichnen
        
        NextElement(objects())
    Wend
    
    ; ... -> TopLayer-Zeile zeichnen
Next i

EDIT: Mist, mit SortList() kann man nur einfache Datentypen sortieren und keine Strukturen. Da mußt Du Dir halt irgendwas einfallen lassen, notfalls selbst eine Sortier-Routine schreiben.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Beitrag von FosJonas »

danke für die schnelle hilfe :D

hmmm jetzt muss ich das ding nur noch zusammenbasteln, sieht zimlich kompliziert aus.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja Du brauchst halt 'ne Möglichkeit um die Objekte nach Y-Position zu sortieren.
Hast Du es denn bisher schon hingekriegt, die Map (ohne Objekte) zu zeichnen? Wenn ja, dann brauchst Du - nachdem Du das mit der Sortierung hast - ja einfach nur dort ansetzen, wo Du Zeile für Zeile Deine Map zeichnest.

Viel Erfolg :)
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ZeHa hat geschrieben:...Mist, mit SortList() kann man nur einfache Datentypen sortieren und keine Strukturen...

Code: Alles auswählen

SortStructuredList()
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ahh :mrgreen:
Wußte ich doch daß das irgendwie ging, hab es auch vor Jahren mal benötigt... aber inzwischen lange nicht mehr, drum hat's mich auch gewundert :)
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten