Levels
Übersicht

BeniBetreff: Levels |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leute kann mir einer sagen wie ein Datei je nach dem wie viele Levels man schon geschafft hat verschiedene 2D Levels lädt? | ||
feiderehemals "Decelion"Betreff: Re: Levels |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Beni hat Folgendes geschrieben: Leute kann mir einer sagen wie ein Datei je nach dem wie viele Levels man schon geschafft hat verschiedene 2D Levels lädt?
WAS MEINST DU? DRÜCKE DICH MIT DER DEUTSCHEN GRAMMATIK AUS!!! Sonst wird dir keiner helfen können. ciao wammerl PS: Oder meinst du, wie ein Programm vreschiedene Levels laden kann? |
||
- Zuletzt bearbeitet von feider am So, Okt 10, 2004 20:22, insgesamt einmal bearbeitet
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OK
Ich hab ein bischen Müll geschrieben Ich meinte: Eine Datei soll ein Level laden Wenn man das level geschafft hat dann soll die Datei ein anderes Level laden Ich schnall des nicht Ist das jetzt verstäntlich? |
||
- Zuletzt bearbeitet von Beni am Mo, Okt 11, 2004 20:20, insgesamt einmal bearbeitet
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das macht man normalerweise nicht in einer externen Datei sondern im Code selber ![]() Meistens definiert man das sogar in einem Level selber. Wenn das level mit einer Tileengine dargestellt wird so hat ein Level meistens mehrere Layer. Unter anderem auch ein Datenlayer. Das heisst du kannst zu jedem Tile in deinem Level noch eigene Daten hinzufügen, die aber auch bei genau gleichem Tile unterschiedlich sein können. Dann machst du ein Tile das ausschliesslich zum Level wechseln dient (unsichtbares Tile). In den Datenlayer dieses Tiles setzt du dann den Dateinamen des nächsten Levels rein. Wenn der Spieler dann in diesem Tile steht wird der Dateiname ausgelesen und das Level mit diesem Dateinamen geladen. Das war jetzt natürlich die etwas kompliziertere Methode. Du könntest auch einfach in eine Textdatei die Level reihenfolge reinschreiben. Dann wenn das level zu Ende ist öffnest du diese Datei und gehst jede Zeile durch bis du auf das aktuelle Level triffst. Dann liest du eine Zeile mehr noch aus und diese ist dann das nächste Level. Gibt natürlich noch viel mehr andere Methoden... |
||
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry aber das hab ich nicht gecheckt.
Kann mir jemand eine der vielen anderen möglichkeiten sagen? |
||
![]() |
Paul |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich vermute jetzt mal, du willst , dass wenn man den ersten level geschaft hat und das Spiel neu startet gleich der zweite geladen wird, oder?
Einfach mit "Writeline" in eine Datei schreiben, welcher LEvel schon geschafft wurde und das ganze mit "Readline" wieder auslesen, für einzelheiten: www. blitzbase.de Paul |
||
Stratocaster black - Roland MicroCube
User posted image Girgl-World, wer's nich kennt, is' blöd! |
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein Nein
Ich schreib da Dim und des ganze Zeug hin und weiter unten die Leveldaten. Dann will ich das wenn man das Level durch gespielt hat ein anderes geladen wird und des klappt net |
||
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Halt!
Ich hab grad gemerckt das des Level überhaupt nicht tut. Da kommt eine Fehlermeldung in der steht:"Out of data" Dann mach ich OK und es kommt: "Memory access violation" ![]() ![]() ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Was, Dim... Leveldaten, pha! Wieso machen das hier alle? Ich finde die Methode so doof wie nochwas... Schreib deine Daten in eine externe Datei und überleg dir dafür ein eigenes Format! Das bringt auch diverse Vorteile mit sich, wirst du sehen! Aber lass den Dim Quatsch, das schränkt dich nur ein! grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jolinah hat Folgendes geschrieben: Das macht man normalerweise nicht in einer externen Datei sondern im Code selber
![]() Ich meinte damit das Level wechseln selber, nicht die Leveldatei. Weil er hat was von ner Datei gesagt die das Level wechselt ![]() Natürlich gehören Levels in ne eigene Datei, aber es geht nicht um die Levels selber sondern wie man den Übergang macht. Und da gibt es viele Möglichkeiten. Am Ende muss man doch nur wenn irgendwas geschieht das aktuelle Level aus dem Speicher löschen und das neue Laden. Wann das Level gewechselt werden soll muss jeder selber festlegen. Am Anfang ist es am einfachsten per Tastendruck die Levels wechseln zu lassen. So kann man es schonmal testen. Und da meistens (zumindest bei 2D) die Levels in einem Array gespeichert sind kann man dazu ganz einfach das Level Array neu dimensionieren. Hier ein Beispiel wie die Loadfunktion dann aussehen könnte: Code: [AUSKLAPPEN] Graphics 1024,768,0,1 SetBuffer BackBuffer() Const MAX_LEVELS = 5 ;Es gibt 5 festgelegte Levels Dim level(0,0) ;Am Anfang nur auf 0,0 setzen Dim levelnamen$(MAX_LEVELS - 1) ;Wenn es 5 festgelegte Levels gibt 0 - 4 levelnamen(0) = "Level1.map" levelnamen(1) = "Level2.map" levelnamen(2) = "Level3.map" levelnamen(3) = "Level4.map" levelnamen(4) = "Level5.map" akt_level = 0 ;Das aktuelle Level soll "Level1.map" sein Load_Level(levelnamen(akt_level)) ;Das aktuelle Level laden. Repeat Cls If keyhit(57) then ;Bei Leertaste... akt_level = akt_level + 1 ;1 Level vorwärts springen... If akt_level > MAX_LEVELS - 1 then akt_level = 0 ;Wenn es das Level nicht gibt wieder auf 0 setzen Load_Level(levelnamen(akt_level)) ;Nun das Level laden. Endif Level_Zeichnen() Flip Until Keyhit(1) EndGraphics End Function Load_Level(level$) file = ReadFile(level$) If not file return 0 breite_der_map = ReadInt(file) hoehe_der_map = ReadInt(file) ;Hier der wichtige Teil, alles was in dem Array war wird wieder auf 0 ;gesetzt, und die Array Dimension wird neu bestimmt. So können ;dann levels unterschiedlicher Grösse geladen werden. Dim level(breite_der_map,hoehe_der_map) ;Und jetzt können ganz Normal die Daten in dieses Array geladen werden ;worauf ich hier jetzt nicht weiter eingehe. ... closefile(file) End Function Natürlich ist das nur 1 Methode von vielen. Und die Level werden üblicherweise nicht bei Druck auf die Leertaste gewechselt, da musst du jetzt nur noch irgend nen Zeitpunkt definieren wo das Level gewechselt werden soll, z.Bsp wenn der Player vor ner Ausgangstür steht etc. |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Jo, noch viel leichter wäre es wenn der Link, vom einem zum anderen Level, in den Leveldateien gespeichert wäre. Dann müsste dieser nur ausgelesen werden und bei auslösen eines Triggerevents (o.ä.) muss nurnoch der entsprechende Level geladen werden. So kann man das ganze auch etwas allgemeiner halten! grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jup, da hast recht. Wollte ich ihm zuerst auch Vorschlagen aber habs wohl zu kompliziert erklärt mit Datenlayer etc. so das er es nicht verstanden hat ![]() |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beni, such doch mal auf blitzbase.de nach Readline(), Writeline() und Function()
Wird dir sicherlich weiterhelfen. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Am besten soll er sich mal Datei-Input/Output im allgemeinen ansehen! Vorallem interessant wären Befehle zum speichern binärer Daten! Denn die Leveldaten im Textformat zu speichern ist auch nicht gerade optimal! grüße |
||
http://bl4ckd0g.funpic.de |
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank Leute jetzt hab ichs kapiert! ![]() Nur ein Problem hab ich noch. Wie und Wo schreib ich die Leveldaten also wo ein Bild gesetzt wird und wo nicht? |
||
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hilft mir denn keiner???
![]() ![]() ![]() ![]() ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Dafür musst du dir halt ein Levelformat überlegen. Am einfachsten wäre es, wenn du nur einen Layer hast und jedes Tile, aus deinem Tileset, eine Nummer zugewießen bekommt... Dann könnte dein Levelformat so aussehen: Code: [AUSKLAPPEN] MapWidth ( 4 byte ) MapHeight( 4 byte ) [ array of MapWidth * MapHeight ] ( 1 byte pro Tile ) Komplizierter wirds dann wenn mehrere Layer, animierte Tiles, Trigger usw hinzukommen. Und/Oder wenn die Tiles verschiedene Eigenschaften zugewießen bekommen, wie: Durchlässig, Tödlich usw... grüße |
||
http://bl4ckd0g.funpic.de |
Beni |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry, ich glaub ich bin zu blöd um des zu checken
Geht des net auch irgend wie anders? |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Doch, du schreibst den Mist hart in deinen Code. Das ist aber nicht viel einfacher, dafür aber sehr viel schlechter! ![]() grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
könntest ja ganz einfach mit writeline z.B.
bildname:bildpositionx:bildpositiony bildname:bildpositionx:bildpositiony bildname:bildpositionx:bildpositiony in eine datei reinschreiben und nach dem gleichen prionzip wieder auslesen. Also das ist schon wirklich eine SEHR einfache Lösung. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group