Type in TXT file schreiben (Mit Bild)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Iguan

Betreff: Type in TXT file schreiben (Mit Bild)

BeitragSo, Jan 22, 2006 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Tachwohl!

Ich bin gerade dabei, einen Leveleditor zu schreiben:

Beim speichern wird der Typeinhalt in eine TXT datei geschrieben:



Code: [AUSKLAPPEN]


fileout = WriteFile("Level.txt")
  For W = Each WW
    WriteLine fileout, W\X
    WriteLine fileout, W\Y
    WriteLine fileout, W\Bild
  Next
CloseFile fileout




Geladen wird so:

Code: [AUSKLAPPEN]



filein = ReadFile("Level.txt")
  While Not Eof(filein)
    X = ReadLine$(Filein)
    Y = ReadLine$(Filein)
    Pic = ReadLine$(Filein)
    W = New WW
    W\X = X
    W\Y = Y
    W\Bild = Pic
  Wend
CloseFile filein




gezeichnet wird so:

Code: [AUSKLAPPEN]


for W = each WW
  DrawImage W\Bild, W\X, W\Y
next





Nun, wenn ich jetzt das Programm starte und eine Map editiere, kann ich speichern und laden ohne Probleme. Nur, wenn ich eine Map gespeichert und den Editor verlassen habe, funktioniert das Laden nach dem Neustart des Editors nicht mehr! Das liegt wohl irgendwie an der Indendität des Bildes... Rolling Eyes
Wie kann man das machen, dass beim Laden nach dem Neustart das entsprechende Bild angezeigt werden kann Question
Oder gibt es eine andere Möglichkeit, Type-daten in ein file zu speichern Question


Danke schon im voraus!


Grüsse


Iguan

Hubsi

BeitragSo, Jan 22, 2006 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Statt dem Handle des Bildes den Dateinamen speichern. Bzw. am vernünftigsten wäre es alle vorhandenen Bilder in ein Array zu laden und nur dessen Nummer in der Datei zu speichern. Beim darstellen der Bilder lässt sich dann auch entsprechend der Nummer auf das Array zugreifen und das Bild muss nicht 3 Trilliarden mal im Grafikspeicher liegen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Schnuff

BeitragSo, Jan 22, 2006 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast:
"for W = each WW" und "W = New WW"
geschrieben, müsste es nicht
"for W.WW = each WW" und "W.WW = New WW"
heißen?

Hubsi

BeitragSo, Jan 22, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht zwingend wenn er beispielsweise vorher den Typehandler global oder local oder sonstwie deklariert hat Very Happy

local w.ww als Beispiel Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

5k41

BeitragSo, Jan 22, 2006 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte hör auf Hubsi! Für einen Level Editor muss man einfach dim benutzen...am einfachsten geht das dann in verbindung mit ner animimage wo alle bilder des Tilesets nebeneinander gezeichnet werden... also ca. so:
Code: [AUSKLAPPEN]

tileset=loadanimimage("tileset.bmp",32,32,0,5)
dim feld(50,50);Oder wie groß die map auch immer ist

while sonstewas

;Zeichnen
for x=anfangsrangex to endrangex
 for y=anfangsrangey to endrandey
  drawimage tileset,x*32,y*32,feld(x,y)
 next
next

;Maus
If mousedown(1) then feld(mousex()/32,mousey()/32)=selection

selection=hier wie man die tiles auswählt also mausrad oder HUD oder so
 

nun musst du nur noch ne formel finden um anfangsrangex usw. zu berechnen...

PS:das mit den ranges kann man auch weglassen und statt dessen 0 und 50 hinschreiben aber mit ist es VIIIEEELL schnelleer!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Iguan

BeitragSo, Jan 22, 2006 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Danke für eure schnelle Antwort!

Ich habs jetzt so gemacht, wie Hubsi geschrieben hat! (Alle Bilder in ein Array gespeichert)
Danach wird anhand der BildNr das ensprechende Bild geladen
Stimmt, W habe ich mit global deklariert!


Jetzt funktioniert alles!

danke für eure Hilfe!

5k41

BeitragSo, Jan 22, 2006 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
...sry aber du hast da was falshc verstanden! hubsi (und ich) wollten beide das gleiche! mach es so wie ich es dir geschreiben hab...weil wenn du dir das anguckst wird dort nur einmal das bild geladen und der rest einfach per einer art "Kennnummer" gemacht...wenn du dir mein beispiel anguckst verstehst du das sicher...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Iguan

BeitragSo, Jan 22, 2006 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Editor läuft jetzt ungefähr so:
(man ist nicht an an Raster gebunden)


1. Schauen wieviele BMP's im GFX ordner
2. Dim Pic(BMP-Anzahl)
3. Alle Bilder nacheinander laden und in Pic()-Array speichern


*****
Beim Bilder setzen auf die Map:
W = new WW
W\X = MouseX()
W\Y = MouseY()
W\B = BildNr
*****


******
Screen updaten:

for W = each WW
DrawImage Pic(W\B), W\X, W\Y
next
******


Auf diese Weise wird das Bild jeweils nur einmal geladen!

5k41

BeitragSo, Jan 22, 2006 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
mh ABER WIESO SO UMSTÄNDLICH^^ ich versteh das nicht^^ guck dir doch mein beispiel von oben mal an brauchst keine types alles wird nur einmal geladen und sollte schneller sein...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Iguan

BeitragSo, Jan 22, 2006 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Beispiel verstehe ich schon! Aber ich will einen Editor, bei dem ohne Raster die Bilder frei platzieren kann! Mit Types kann ich soviele Bilder setzen, wie ich will! Bei deinem Code geht das alles nicht! Wink

5k41

BeitragSo, Jan 22, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
mh ok ich weiss zwar nun nicht was du genau meinst, da ich glaube das man das alles so wie ichs mach umsetzten kann aber ist ja auch egal hauptsache dir ist eholfen^^
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Hubsi

BeitragSo, Jan 22, 2006 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Er hat schlicht keine Tilemap Very Happy Das scheints mir zu sein was Du nicht einsehen willst Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group