Map aus Textdokument Umwandeln

09/10/2012 17:42 masterkuchen1324#1
Hallo, Ich bins mal wieder ;) Ich brauche hilfe!
Ich bin gerade dabei aus ein txt dokument eine map "Zuladen"
Ín den Textdokument steht dies:
111111111111
122222222221
122222222221
122222222221
122222222221
122222222221
122222222221
122222222221
122222222221
122222222221
122222222221
111111111111

1 = Zaun.
2 = Gras

Also, mann kan ein Textdokument ja mit FileRead() Auslesen.
Doch meine frage ist, wie ich z.B. festlege, das er stadt einer "1" ein Bild anzeigt, das ca. 16x16 pixel groß ist.
Ich möchte später so eine Spielfläche erzeugen.

Ich habe auch schon ein Tutorial in C# Gefunden. Aber in AutoIT nichts...

gibt es da nicht vieleicht befehle wie replace oder sowas?
09/10/2012 18:06 Achat#2
StringSplit <- F1 drücken.
Guictrlcreatepic...

MfG

PS: Die Hilfe hilft dir ;) In Scite auf F1, dort werden auch alle Befehle erklärt.
PPS: Hast du dir überhaupt schon mal die Grundlagen in AutoIt angeschaut?
09/10/2012 18:12 masterkuchen1324#3
Quote:
Originally Posted by Achat View Post
StringSplit <- F1 drücken.
Guictrlcreatepic...

MfG

PS: Die Hilfe hilft dir ;) In Scite auf F1, dort werden auch alle Befehle erklärt.
PPS: Hast du dir überhaupt schon mal die Grundlagen in AutoIt angeschaut?
Ja Danke! Klar habe ich schon viele Grundlagen/Tuts angeschaut.
Ich kann schon einiges selber pogramieren.
Meinst du das mit GuiCtrlCreateEpic ernst?
Den es heißt doch eigentlich nicht "Epic" sondern "Edit" :D

Und wie wende ich es an? Und wozu ist es da? Sorry, Meine AutoIT hilfe ist auf English. Ich verstehe es meist erst beim 4ten mal lesen...
09/10/2012 18:21 Achat#4
Quote:
Originally Posted by masterkuchen1324 View Post
Meinst du das mit GuiCtrlCreateEpic ernst?
Quote:
Originally Posted by Achat View Post
Guictrlcreatepic...

[Only registered and activated users can see links. Click Here To Register...]

€dit: Deutsche Hilfe [Only registered and activated users can see links. Click Here To Register...]
09/10/2012 18:50 masterkuchen1324#5
Das weiß ich schon, das man so ein bild anzeigt... aber meine frage war, wie ich es umewandel also "1" in "pic.gif" oder sowas
09/10/2012 19:03 Achat#6
Achso, da habe ich dich wohl missverstanden.
StringReplace
Wenn du z.B. anfängst, String einzugeben, schlägt dir Scite automatisch Funktionen vor, die so anfangen.

MfG
09/10/2012 19:14 masterkuchen1324#7
Quote:
Originally Posted by Achat View Post
Achso, da habe ich dich wohl missverstanden.
StringReplace
Wenn du z.B. anfängst, String einzugeben, schlägt dir Scite automatisch Funktionen vor, die so anfangen.

MfG
Ah Okay, Habe es jezt so versucht.
HTML Code:
;--Includes--
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include<File.au3>



$Map = FileRead("map.txt")

$scan = StringReplace("map.txt","1","h")
MsgBox(1, "Test", $scan)
Wie man sieht, sollte er aus "1" ein "h" machen, und in der msg box anzeigen... Dies macht er aber nicht. Er zeigt nur "map.txt" an.

EDIT: Hatt sich geklärt, habe statt "map.txt" das geschrieben: $Map
09/10/2012 19:14 Shadow992#8
Um das ganze jetzt einmal ganz simpel zu machen:
PHP Code:
$map="11221212"
$array_map=StringSplit($map,"")

$line=0
$x_added
=0

for $i=0 To Ubound($array_map)-1
    
if $array_map[$i]="1" Then
        
Create Pic mit Bild1
        
x=pic_größe*$x_added
        
y=$line*pic_größe
        $x_added
+=1
    
ElseIf $array_map[$i]="2" Then
        
Create Pic mit Bild2
        
x=pic_größe*$x_added
        
y=$line*pic_größe
        $x_added
+=1
    
EndIf
    
    if 
$array_map[$i]=@CR Then
        $line
+=1
        $x_added
=0
    
EndIf
Next 
Ich hoffe ich hab nichts vergessen habe das ganze eben so aus dem Kopf zusammengeschrieben, aber sollte gehen.
09/10/2012 19:25 masterkuchen1324#9
Quote:
Originally Posted by Shadow992 View Post
Um das ganze jetzt einmal ganz simpel zu machen:
PHP Code:
$map="11221212"
$array_map=StringSplit($map,"")

$line=0
$x_added
=0

for $i=0 To Ubound($array_map)-1
    
if $array_map[$i]="1" Then
        
Create Pic mit Bild1
        
x=pic_größe*$x_added
        
y=$line*pic_größe
        $x_added
+=1
    
ElseIf $array_map[$i]="2" Then
        
Create Pic mit Bild2
        
x=pic_größe*$x_added
        
y=$line*pic_größe
        $x_added
+=1
    
EndIf
    
    if 
$array_map[$i]=@CR Then
        $line
+=1
        $x_added
=0
    
EndIf
Next 
Ich hoffe ich hab nichts vergessen habe das ganze eben so aus dem Kopf zusammengeschrieben, aber sollte gehen.
Danke, Genau sowas habe ich gesucht! Ein script, den ich verstehe ;)
Danke nochmal, verdienst ein Thanks!

Hmm... Jezt zeigt er mir aber nicht das Bild an...
HTML Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include<File.au3>



$gui = GUICreate("Farmer", 931, 478, 192, 124)
GUISetState(@SW_SHOW)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd




$map="11221212"
$array_map=StringSplit($map,"")
$line=16
$x_added=16

for $i=0 To Ubound($array_map)-1
    if $array_map[$i]="1" Then
        GuiCtrlCreatePic("zaun.gif", 0, 0, $line, $line)
         ;x=pic_größe*$x_added
         ;y=$line*pic_größe
        $x_added+=1
    ElseIf $array_map[$i]="2" Then
        ; Create Pic mit Bild2
        ; x=pic_größe*$x_added
        ; y=$line*pic_größe
        $x_added+=1
    EndIf
    
    if $array_map[$i]=@CR Then
        $line+=1
        $x_added=0
    EndIf
Next
09/10/2012 19:56 KDeluxe#10
Herzlichen Glückwunsch!

Du schreibst, dass du es verstanden hast, kopierst es aber dann einfach stupide ans Ende deines Scripts und wunderst dich, warum nichts angezeigt wird.
Ganz einfach, der Code wird nie erreicht, damit sollte auch die Frage geklärt sein, warum nichts angezeigt wird.
Mal abgesehen davon müsstest du die Größe der GUI ebenfalls dynamisch festsetzen und nicht so wie es momentan in deinem Script ist.
09/10/2012 19:57 omer36#11
weil es außerhalb der schleife ist und in diesem fall nie erreicht wird.

könntest es zwischen dem EndSwitch und dem WEnd rein kopieren,
aber so wird die gui warscheinlich flackern (da er die bilder immer wieder neu erstellt)

kannst ja ne abfrage erstellen, ob die .txt schon gelesen wurde oder nicht....

oder zb einen button erstellen und die funktion dann mit
den von Shadow992 erstellten codeschnipsel verknüpfen
09/10/2012 20:25 masterkuchen1324#12
Quote:
Originally Posted by omer36 View Post
weil es außerhalb der schleife ist und in diesem fall nie erreicht wird.

könntest es zwischen dem EndSwitch und dem WEnd rein kopieren,
aber so wird die gui warscheinlich flackern (da er die bilder immer wieder neu erstellt)

kannst ja ne abfrage erstellen, ob die .txt schon gelesen wurde oder nicht....

oder zb einen button erstellen und die funktion dann mit
den von Shadow992 erstellten codeschnipsel verknüpfen
Dankeschön... Jezt funktioniert schon alles, auch mit txt file.
Danke nochmal an Shadow.
09/11/2012 18:24 KDeluxe#13
Dennoch vermute ich, dass das Potential von shadows Script nicht voll ausgenutzt wird, also schmeiße ich mein Beispiel noch hinterher.
09/15/2012 11:21 masterkuchen1324#14
Quote:
Originally Posted by KDeluxe View Post
Dennoch vermute ich, dass das Potential von shadows Script nicht voll ausgenutzt wird, also schmeiße ich mein Beispiel noch hinterher.
War lange nichtmehr hier... Ich bin jezt auchschon weiter gekommen. Ich hatte auch schon meine Map dan in ein Array geschoben, damit es auch schneller geht, wen man in den Array mal was ändert / wieder die map neulädt.