TileMap Extern Laden | Kollision
Übersicht

![]() |
GearTechDEehemals 'KillerJo96'Betreff: TileMap Extern Laden | Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Wie schon in einem anderen Thread gesagt, möchte ich jetzt lieber doch mit der 2D Programmierung beginnen. Gestern habe ich angefangen, zu lernen, wie ich Tilesets benutze. Ich bin mit meinen Kenntnissen dort für einen Tag schonmal zufrieden. Jedoch habe ich aus dem Tutorial von Robsite nur gelernt, wie ich die Maps mit dem ganzen Data Gedöns da, im Programm Code selber zu programmieren. Jetzt gibt es hier einige Leute (zu denen gehöre ich auch), die wollen, dass man die Maps in einer externen Datei lädt. Aber wie kann ich das realisieren? Ich habe eine im Ordner .\Maps\Map01.lvl Datei angelegt, daraus möchte ich die Maps dann laden. Nur wie? Ich habe mir dazu schon OpenFile etc. angeguckt. Ich weiß auch wie ich Zeilen auslese so mit ReadLine und so, aber das ist ja Zeilenweise ![]() Ich hoffe mir kann jemand helfen. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kommt darauf an, wie du deine Level erstellen und bearbeiten willst. Wenn du sie per Text Editor tippen willst, musst du den Text zurechtschneiden: Zeile auslesen und mit Instr![]() ![]() Die andere Möglichkeit ist, das du dir einen eignen Level Editor schreibst - da musst du nur alles hintereinander Speichern und in der selben Reihenfolge laden. Diese Variante würde ich auf längere Sicht für einfacher und komfortabler halten. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nja, aber das ist noch nicht mein Problem,
ich weiß nichtmals wie ich die Levels einbinden soll. Vorher habe ich immer: Code: [AUSKLAPPEN] Data 1,1,1,1,1 Data 1,1,1,1,1 Data 1,1,1,1,1 Data 1,1,1,1,1 Data 1,1,1,1,1 Jetzt möchte ich dieses Feld von 1 en in die Map01.lvl schreiben und dann auslesen. Wie mach ich das? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn deine Karte eine Variable Größe hat, solltest du breite & höhe Speichern - und dann folgt einfach der Karteninhalt. WriteInt![]() Beim Laden liest du breite & höhe aus, Dimensionierst das Array auf die größe, und lädst die Daten in zwei verschachtelten Schleifen. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du mir vielleicht nen kleinen Beispiel Code nennen?
Ich verstehe nicht so genau wies gemeint ist - sorry. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bitteschön:
BlitzBasic: [AUSKLAPPEN]
Frag nach, falls dir was nicht klar ist. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich schreibe mir immer einen kleinen editor für sowas, das dauert natürlich ein weilchen, aber ich bin beim programmieren keine aristotelische teleologin ![]() Ganz simpel kannst du das in etwa so machen BlitzBasic: [AUSKLAPPEN] Global SelectedTile,tilesize Also da fehlt natürlich noch was und der kann fast nichts, aber vielleicht erkennt man ein prinzip wie man es lösen kann. Die Funktion getTile und moveoverlape musst du selber machen, ich muss in die uni ![]() GetTile muss aus einer Zahl ein Image zurück geben. Edit: ach Xeres ![]() ![]() |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
hehe, danke ihr beiden.. Werde mir das jetzt maln paar stunden angucken. Denn beide Codes kann ich ja schlecht einfach runterlesen.... naja danke jedenfalls dafür.
Bei weiteren Fragen melde ich mich hier. Edit: Ja ich habe schon eine Frage: @Xeres du hast bei Dim Karte(Karte_w) etc ein -1 stehen... Wofür steht diese -1? |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe ein Problem mit deinem Code Xeres.
Hier mal mein bisheriges Projekt: Main.bb BlitzBasic: [AUSKLAPPEN]
LoadResources.bb BlitzBasic: [AUSKLAPPEN]
Maps.bb BlitzBasic: [AUSKLAPPEN]
Wobei ich die Map01.lvl mal in alle Ordner zur Sicherheit kopiert. Ich bekomme immer einen MAV. Warum? Vorher gings alles. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Killerjo96 hat Folgendes geschrieben: Wofür steht diese -1? Ein mit Dim![]() Menschen fangen bei 1 an zu zählen, Computer bei 0 - ich korrigiere also die Größe, damit es keinen ungenutzen Platz gibt. Killerjo96 hat Folgendes geschrieben: Ich bekomme immer einen MAV. Gewöhne dir gleich an, selbst du Debuggen.
Debugger in der IDE einschalten, Genaue Fehlerbeschreibung + Zeile untersuchen bzw. posten. Kann sein das es daran liegt, dass du beim zeichnen x-y statt y-x Schleifen benutzt. y-x geht das Array Zeilenweise durch, x-y Spaltenweise. Erstere Variante ist schneller, da der Speicher linear durchgegangen wird und nicht so herum gesprungen werden muss. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei Debugging wird diese Zeile markiert:
Code: [AUSKLAPPEN] Dim Karte(Karte_W-1, Karte_H-1) |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann lass dir doch mal im Debugger ausdrucken, welche Werte wirklich für Karte_W und Karte_H eingelesen wurden:
BlitzBasic: [AUSKLAPPEN] Local FileStream%=ReadFile("Map01.lvl") Es gibt übrigens ein Tutorial zum Lesen/Schreiben von Map-Daten in Files: Lektion VI meines "Dateien-Tutorials" : https://www.blitzforum.de/foru...hp?t=33651 |
||
- Zuletzt bearbeitet von Midimaster am Fr, Jul 01, 2011 13:24, insgesamt einmal bearbeitet
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
omfg... jetzt kapier ich garnix mehr.... | ||
Mit freundlichen Grüßen: GearTechDE |
pinochino |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN] DebugLog "Die DIMS=" + Karte_W + " " + Karte_H Damit werden dir Im Debugfenster die Werte Für Karte_W & Karte_H angezeigt lg |
||
- Zuletzt bearbeitet von pinochino am Fr, Jul 01, 2011 13:35, insgesamt einmal bearbeitet
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wieso, war dieser tipp jetzt wirklich zu kompliziert?
Du kannst Inhalte von Variablen immer im Debugger anzeigen lassen. Dazu schreibst Du einfach an der gewünschten Stelle: BlitzBasic: [AUSKLAPPEN] DebugLog Wert Dann lässt du das Programm laufen und beobachtest, was der Debugger an Zahlen ausgibt. Ich vermute mal er wird dir zwei Nullen anzeigen. Das bedeutet, der READFILE Vorgang (Zeile davor) ist schief gegangen. TIPP: Es ist auch wirklich nicht sehr sinnvoll als Anfänger mit einer MAP-Datei zu beginnen, die sich nicht in einem x-beliebigen Text-Editor erstellen betrachten oder ändern lässt. Besser du schreibst die MAP erst mal mit dem Notepad (oder direkt in einem zweiten BB-Fenster ![]() Der Unterschied zu den Byte-basierten Dateien ist, das Du immer eine ganze waagrechte Zeile auf einmal einliest, in der du dann die einzelnen x-Werte auseinandertrennen musst. Dann folgt die zweite Zeile.u.s.w Die Werte sind dann erst einmal Strings, die dann in Zahlen gewandelt werden müssen. Der Vorteil ist, dass du in Form und Größe des Feldes flexibel bist und eben nicht von einer festen Form des Spielfeldes ausgehen musst. Außerdem kannst Du Änderungen am Spielfeld leicht mit einem Text-Editor durchführen. Dazu hilft Kapitel VI |
||
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja das meine ich ja... Ich mache die maps mit dem Notepad. ABer will sie halt nicht im Programm schreiben, sondern extern laden.... Aber i-wie wills nicht so.
Hihi ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo
du könntest auch einfach ein bild mit farbstufen benutzen und dann mit readpixel immer werte zuweisen. dann kann auch die größe der map variieren. zuerst ermittelst du die höhe und breite des bildes und dann kannst du daraus auch dein feld dimensionieren. wenn du doch eine datei haben willst, dann kann ich dir etwas schreiben. |
||
![]() |
ZEVSBetreff: Maps mit Notepad? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sowohl Bilder als auch Textdateien sind meiner Meinung nach gänzlich ungeeignet zum Speichern von Maps.
Probiere doch mal einen professionelleren Hex-Editor wie XVI: Homepage Download Einfach das Archiv entpacken und die *.exe starten. Damit kannst du einfach die Dateien bearbeiten. Kenntnisse im hexadezimalen Zahlensystem sind Vorraussetzung, aber die braucht man oft, sodass sich ein Lernen oft lohnt. Hinweis: ein Int braucht immer Vier Bytes. Noch einfacher geht es wahrscheinlich mit einem eigenen Editor. Wahrscheinlich auch schneller. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du die Maps bereits mit dem Notpad erstelltst, dann kannst du sie nicht byteweise einlesen! Sondern dann musst du sie genauso erfassen, wie ich das in dem Tutorial schildere.
leider bin ich das ganze Wochenende "on the road" und kann dir dann in dieser Zeit nicht weiterhelfen..... Ich schaue Montag wieder rein.... |
||
![]() |
ZEVSBetreff: Tiles mit Notepad |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du dich doch entscheiden solltest, die Maps mit dem Notepad zu schreiben, musst du dir ein Dateiformat ausdenken und konsequent einhalten. Ein Beispiel:
Code: [AUSKLAPPEN] Breite|Höhe
Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile|Tile Die Datei sieht dan z.B. so aus: Code: [AUSKLAPPEN] 5|5
1|1|1|1|1 1|2|1|2|1 1|1|2|1|1 1|2|1|2|1 1|1|1|1|1 Entsprechend musst du mit ReadFile, ReadLine, Instr und Mid, Left und Right die Datei verarbeiten. Ich arbeite an einem Beispiel edit: hier ist es: BlitzBasic: [AUSKLAPPEN] file = ReadFile("map.txt") |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group