2d Level-Editor Probleme
Übersicht

ZiggyBetreff: 2d Level-Editor Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute.
Ich versuche den Editor von Rob's Homepage anzupassen, ich will ihn flexibler mache, mit der Möglichkeit die Breite des Levels (damit auch das Dim-Array) vorher selbst festzulegen. Das funktioniert auch schon ganz gut, leider habe ich jetzt das Problem, dass ich das Dim-Array beim laden des Levels im eigentlichen Spiel ja eigentlich vorher festlegen muss. Code: [AUSKLAPPEN] ;-------- Main.bb ----------- Include "globales.bb" Include "settings.bb" Include "functions.bb" Graphics gfxWidth,gfxHeight,gfxBpp,gfxMode SetBuffer BackBuffer() [...] Dim tiles(6) For x=0 To 5 tiles(x) = LoadImage("gfx/tile"+Str$(x)+".png") ScaleImage tiles(x),2,2 MaskImage tiles(x),0,0,0 Next Dim level(8,20) ; <----- hier ist das blöde Array welches sich an dem Level ausrichten muss !!! For x=0 To 7 For y=0 To 19 level(x,y)=0 Next Next Repeat Cls HidePointer [...] ;Level laden If gamemode = 1 Then levelname$ = "level1" file = ReadFile("data/"+Str$(levelname$)+".dat") For y =0 To 7 For x= 0 To 19 level(y,x) = ReadLine(file) Next Next CloseFile file For y=0 To 7 For x=0 To 19 DrawImage tiles(level(y,x)),x*64,y*64 Next Next EndIf [...] Flip Until KeyHit(1) End Meine Frage nun: kann ich aus der Level-Datei selbst die Länge der Zeilen/Spalten auslesen? Eine Möglichkeit die ich mir selbst überlegt habe: ich lege die Breite immer auf 99 oder so fest, lege dann aber im Level selbst einen "Checkpoint" an, und wenn der Spieler diesen berührt fängt das nächste Level an. (Dies wollte ich sowieso machen, um das Ende des Levels zu signalisieren) Danke schon mal für eure Anregungen. Gruß. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
du kannst einfach eine maximalgrösse des levels festlegen Code: [AUSKLAPPEN] dim level(99,99)
zu beginn jeder leveldatei speicherst du zuerst breite und höhe und liest diese werte vor dem laden aus: Code: [AUSKLAPPEN] stream=openfile(blabla)
levelbreite = readbyte(stream) leveltiefe = readbyte(stream) For y = 1 To leveltiefe For x = 1 To levelbreite level(x,y) = readbyte(stream) Next Next alles weitere kannst du dann folgendermassen flexibel lösen: Code: [AUSKLAPPEN] for x=1 to levelbreite
for y=1 to leveltiefe mach das und das und das auch noch... next next l8er psy |
||
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die Antwort,
ich werde es jedoch jetzt so machen dass das Level immer aus Dim(8,100) besteht, und wenn ich das Levelende erreicht habe dann zeichne ich dort einen unsichtbaren "Checkpoint" ein, welcher das Ende bestimmt. Scheint mir eine vernünftige Lösung zu sein. Gruß. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die vernünftige Lösung scheint PSYs Ansatz zu sein... | ||
Play Satyr! |
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was is an meiner Lösung schlecht? | ||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du speicherst unnötige Daten und Du kannst Dein Level nicht größer machen, wenn Du es aus irgendeinem Grund doch mal machen möchtest. Und man sollte immer möglichst resourcenschonend und flexibel programmieren. | ||
Play Satyr! |
Ziggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmmm.... ich werd nochmal drüber nachdenken, DerHase.
Gute Nacht zusammen. |
||
"Es gibt 10 Arten von Menschen: Diejenigen die Binär verstehen, und jene die es nicht verstehen."
"Irren ist menschlich, gut dass ich ein Gott bin... xD" letzte Informatik-Note : 1 ... 96% richtig, Thema: C++ switch/case |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group