Zwei Bildsets übereinander?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Sereyanne

Betreff: Zwei Bildsets übereinander?

BeitragSo, Jun 12, 2011 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich glaub ich hab mal ne ziemlich doofe Frage an euch Wink.
Wie steck ich denn zwei Bildsets übereinander? Oder ist das gar nicht nötig? Wie macht ihr das?
Also, Situation ist die, ich mach ein 2D Spiel mit B3D. Wenn ich nun per Dim ein Feld erstelle und da meine Bilder als Tiles reinlade, hab ich ja nen tollen Hintergrund. Wenn ich da jetzt Bäume oder Kleinteile draufzeichnen will, dann geht immer nur eines - entweder Hintergrund oder Baum. Per Maskimage fällt das zwar nicht so auf, wenn der Hintergrund hinter dem Baum jetzt Standardgrün statt Wiese ist, aber irgendwie muss es doch besser gehen??
Wenn ihr meinen Code braucht, sagt es. Vielleicht kann ich ja auch mit "Standard-Lösungen" Wink etwas anfangen.
LG und danke im Voraus.
Sereyanne

ZaP

BeitragSo, Jun 12, 2011 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Du willst eine Tile-basierende Welt mit mehreren Layern erschaffen, nehme ich an. Wenn Du das mit Dim löst, mach die Dinger doch 2D und speicher zusätzlich die Layernummer pro Tile mit rein. So kannst Du jeden Layer nacheinander übermalen, erst den Hintergrund, dann irgendwelche Bäume usw.
Starfare: Worklog, Website (download)

BladeRunner

Moderator

BeitragSo, Jun 12, 2011 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh ne deinen Code können wir in der Tat nicht wissen warum du nur ein Bild gezeichnet kriegst, denn eigentlich solltest Du die Bilder problemlos 'stapeln' können, vorausgesetzt, du hast vernünftige Mask-Farben gesetzt.
Ab davon gibt es natürlich noch Hectics Lib Draw3d, womit Du auch Alpha in deinen Images verwenden kannst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Sereyanne

BeitragSo, Jun 12, 2011 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ZaP hat Folgendes geschrieben:
Du willst eine Tile-basierende Welt mit mehreren Layern erschaffen, nehme ich an. Wenn Du das mit Dim löst, mach die Dinger doch 2D und speicher zusätzlich die Layernummer pro Tile mit rein. So kannst Du jeden Layer nacheinander übermalen, erst den Hintergrund, dann irgendwelche Bäume usw.

Hast du dazu vielleicht mal nen Codeschnipsel parat, damit ich mir das vorstellen kann?
Ich hab bisher noch nie versucht, mit mehreren Dims zu arbeiten. Hätte ich das einfach mal tun sollen? Was muss ich dabei beachten?

Xeres

Moderator

BeitragSo, Jun 12, 2011 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest auch ein Dreidimensionales Array verwenden. Du zeichnest einfach von Hinten nach Vorn - was zuletzt gezeichnet wird, liegt halt obenauf.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Sereyanne

BeitragSo, Jun 12, 2011 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Du könntest auch ein Dreidimensionales Array verwenden. Du zeichnest einfach von Hinten nach Vorn - was zuletzt gezeichnet wird, liegt halt obenauf.

auch keine schlechte idee... wie realisier ich das?
dim map(50,50,50) muss ich die karte dann 50x schreiben? ziemlich viel schreibarbeit oder?
was ich meine, ist wie schreib ich das?
bei dim map(50,50) muss ich ja schon:
50 x position
und das 50 zeilen lang schreiben
wie mach ich das dann bei (50,50,50)

Xeres

Moderator

BeitragSo, Jun 12, 2011 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube eigentlich nicht, das du 50 Layer brauchst... Aber davon abgesehen: Du zeichnest deine Karte doch sicherlich in zwei For...Next Schleifen? Nimm doch zu X und Y noch die Tiefe Z hinzu.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BladeRunner

Moderator

BeitragSo, Jun 12, 2011 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Brauchst Du denn 50 Layer?
Dim Map(50,50,2) würde es doch auch tun Wink
Und das lesen und einzeichnen ist eine zusätzliche For-next
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Sereyanne

BeitragSo, Jun 12, 2011 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Ich glaube eigentlich nicht, das du 50 Layer brauchst... Aber davon abgesehen: Du zeichnest deine Karte doch sicherlich in zwei For...Next Schleifen? Nimm doch zu X und Y noch die Tiefe Z hinzu.

Wie gesagt, die Idee klingt ja ganz gut, aber ich steh mit der Umsetzung aufem Schlauch.
Momentan sieht es so aus:
Code: [AUSKLAPPEN]

dim map (50,50)
data 1,2,3 usw. eben bis 50
data 1,2,3 usw. eben bis 50
data 1,2,3 usw. eben bis 50
naja 50 zeilen lang halt
for y=0 to 49
for x=0 to 49
read map (x,y)
next
next

Wie hab ich das zu schreiben, wenn ich 3 Dimensionen benutze?

Nein natürlich brauche ich keine 50 Layer.... bei mir haperts nur mit der Schreibweise, wie oben angegeben.
  • Zuletzt bearbeitet von Sereyanne am So, Jun 12, 2011 19:31, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSo, Jun 12, 2011 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja...
Code: [AUSKLAPPEN]
for z=0 to 49
for y=0 to 49
for x=0 to 49
read map (x,y,z)
next
next
next


Zeit, sich Gedanken um ein eigenes Level Format zu machen, und auf Data Zeilen zu verzichten Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Sereyanne

BeitragSo, Jun 12, 2011 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:

Zeit, sich Gedanken um ein eigenes Level Format zu machen, und auf Data Zeilen zu verzichten Wink

Das sagst du so leicht. Hab ich noch nie gemacht. Wo schreib ich die Zeilen hin, wenn ich das nicht habe?


Bis hierhin möchte ich aber schon mal ein herzliches Dankeschön ausprechen!

Xeres

Moderator

BeitragSo, Jun 12, 2011 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Stell es dir vor, wie Papier, das du übereinander stapelst.
BlitzBasic: [AUSKLAPPEN]
Dim map (2,2,2)
;* Layer 0
Data 0,0,0
Data 0,0,0
Data 0,0,0

;* Layer 1
Data 1,1,1
Data 1,1,1
Data 1,1,1

;* Layer 2
Data 2,2,2
Data 2,2,2
Data 2,2,2

Local x,y,z, s$

For z=0 To 2
For y=0 To 2
For x=0 To 2
Read map(x,y,z)
s = s + "-" + map(x,y,z)
Next
Print(s+"-")
s=""
Next
Print("* * * *")
Next

WaitKey()
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Sereyanne

BeitragSo, Jun 12, 2011 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
OKay, jetzt kann ich mir das vorstellen. Werde es mal probieren.

Vielen Dank!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group