Array & IniWrite/Read

11/12/2010 10:00 Lighthex#1
Hallo alle zusammen,
ehm mein Problem ist ich will in einem Spiel die Abgelaufenen Koordinaten abspeichern. Also wenn ich laufe soll angefangen werden die x&y Koordinaten abspeichern und dann diese immer in eine IniDatei speichern...
Wichtig ist auch noch das diese Ini Datei später ausgelesen wird und in Zwei ListViews gezeigt wird.
Aber es soll kein mindest laufen sein oder ein höchst laufen....
Damit meine ich das es egal ist wie viel ich laufe...


Danke...
11/12/2010 11:31 | Moep |#2
Pseudocode:
Code:
$xCoord = MemoryRead($xMem)
$yCoord = MemoryRead($yMem)

if $xCoord <> MemoryRead($xMem) or $yCoord <> MemoryRead($yMem) then iniWrite($xCoord&" "&$yCoord)
11/12/2010 11:49 Lighthex#3
ehm ja das soll wie eine Liste sein also ich laufe es wird gespeichert dan werden alle koordinate die ich gelaufen bin gespeichert werden ...
11/12/2010 12:07 lolkop#4
und warum speicherst du das nicht in einem beliebigen file?

ich glaube es gibt nichts was auch nur annähernd so schlecht geeignet ist wie eine ini für dein problem...

würde auch vorschlagen, nicht jede kleine coordinaten änderung zu speichern, da das doch recht viel wäre :P

würde nur bei richtungswechsel einträge machen...
dh richtungsvektor bestimmen, und bei änderung speichern in file (zb. mit filewrite('filename', $x&','&$y))
11/12/2010 15:45 KDeluxe#5
Wenn du eine ListView benutzen möchtest, empfehle ich dir eher eine .txt. Für diese
benutzt du einfach "FileReadLine" um die .txt auszulesen und "FileWriteLine" um die .txt
zu speichern. Hier mal ein Beispiel, wie das aussehen könnte:
PHP Code:
Func _Speichern()
    
$Count _GUICtrlListView_GetItemCount($LV_Handle) - 1
    $hFile 
FileOpen($File2)
    If 
Not @error Then
        
For $i 0 To $Count
            $Item 
_GUICtrlListView_GetItemTextString($LV_Handle$i)
            
FileWriteLine($hFile$Item)
        
Next
        FileClose
($hFile)
    EndIf
EndFunc

Func _Laden
()
    
$hFile FileOpen($File0)
    If 
Not @error Then
        _GUICtrlListView_BeginUpdate
($LV_Handle)
        While 
True
            $Item 
FileReadLine($hFile)
            If @
error Then ExitLoop
            GUICtrlCreateListViewItem
($Item$ListView)
        
WEnd
        _GUICtrlListView_EndUpdate
($LV_Handle)
        
FileClose($hFile)
    EndIf
EndFunc 
Aber wie lolkop schon gesagt hat, solltest du nicht jede kleine Änderung
speichern. Falls du nicht weiß, wie das mit der Richtung funktioniert, oder
es deiner Meinung nach unnötig ist, kannst du auch kleine Schritte nehmen.

PHP Code:
$MemX _MemoryPointerRead()
$MemY _MemoryPointerRead()

If 
$CordX $MemX[1] Or $CordX $MemX[1] Or $CordY $MemY[1] Or $CordY $MemY[1Then
    $CordX 
$MemX[1]
    
$CordY $MemY[1]
    
GUICtrlCreateListViewItem($CordX "|" $CordY$ListView)
EndIf 
11/12/2010 20:04 Lighthex#6
Also mit Richtungswelchsel hat das eig nicht viel zu tuh es soll ja der Weg den man gelaufen ist gespeichert werden ....
also es soll in so einem GUI gezeigt werden und wenn man auf die Taste Drückt in einer Datei gespeichert werden ....
So sollte das Gui aussehen ...
Quote:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("WalkWay", 241, 321, 192, 124)
$List1 = GUICtrlCreateList("", 8, 38, 105, 240)
$List2 = GUICtrlCreateList("", 120, 38, 105, 240)
$Label1 = GUICtrlCreateLabel("X :", 8, 16, 17, 17)
$Label2 = GUICtrlCreateLabel("Y :", 120, 16, 17, 17)
$Button1 = GUICtrlCreateButton("Save", 8, 288, 219, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd
11/13/2010 10:58 Lighthex#7
PUSH !