also jetzt ist es top^^
vor allem die dokumentation
trotzdem kann es sein dass du meinen letzten geschwindigkeitstest übersehen hast?
Padmak
also jetzt ist es top^^
vor allem die dokumentation
trotzdem kann es sein dass du meinen letzten geschwindigkeitstest übersehen hast?
Padmak
Stimmt, hab ich glatt übersehen, und als ich es geschrieben habe hatte ich sogar noch daran gedacht es vieleicht alles in ein select zu packen, habs dann aber nicht gemacht weil ich nicht wusste ob es was bringt^^
Das Werd ich auf jeden fall in der nächsten Version verbessern.
Vieleicht bau ich mir jetzt erstmal einen kleinen Editor, damit man die Objekte einfacher setzten kann, mal schaun.
Achja, habe noch eine Frage:
Gibt es einen Geschwindigkeits unterschied zwischen arrays und structs?
Und wenn ja, welches ist schneller?
Gibt es einen Geschwindigkeits unterschied zwischen arrays und structs?
Und wenn ja, welches ist schneller?
Habs jetzt mal getestet, hier das Skript:
; Vergleichstest Array vs. Structs
[/autoit] [autoit][/autoit] [autoit]Global $testStruct1 = DllStructCreate("int;int;int;int;int;int;int;int;int;int")
Global $testStruct2 = DllStructCreate("int a[5];int b[5];int c[5];int d[5];int e[5];int f[5];int g[5];int h[5];int i[5];int j[5]")
Global $array1[10]
Global $array2[10][5]
Global $aRandom
Global $start, $t, $sumStr1 = 0, $sumStr2 = 0, $sumAr1 = 0, $sumAr2 = 0
Global $runs = 100
For $i = 1 To $runs
$aRandom = _GetRandomVal(10)
$start = TimerInit()
_SetStruct1($aRandom)
_GetStruct1()
$t = TimerDiff($start)
ConsoleWrite('$t_s1 = ' & $t & @crlf)
$sumStr1 += $t
$start = TimerInit()
_SetArray1($aRandom)
_GetArray1()
$t = TimerDiff($start)
ConsoleWrite('$t_a1 = ' & $t & @crlf)
$sumAr1 += $t
$aRandom = _GetRandomVal(50)
$start = TimerInit()
_SetStruct2($aRandom)
_GetStruct2()
$t = TimerDiff($start)
ConsoleWrite('$t_s2 = ' & $t & @crlf)
$sumStr2 += $t
$start = TimerInit()
_SetArray2($aRandom)
_GetArray2()
$t = TimerDiff($start)
ConsoleWrite('$t_a2 = ' & $t & @crlf& @crlf)
$sumAr2 += $t
Next
ConsoleWrite(@CRLF & 'Durchschnittszeiten Schreiben + Lesen' & @CRLF)
ConsoleWrite('Struct 1: ' & @TAB & $sumStr1/$runs & @CRLF)
ConsoleWrite('Array 1: ' & @TAB & $sumAr1/$runs & @CRLF)
ConsoleWrite('Struct 2: ' & @TAB & $sumStr2/$runs & @CRLF)
ConsoleWrite('Array 2: ' & @TAB & $sumAr2/$runs & @CRLF)
Func _GetRandomVal($i)
Local $aRandom[$i]
For $i = 0 To UBound($aRandom) -1
$aRandom[$i] = Random(100, 10000, 1)
Next
Return $aRandom
EndFunc
Func _SetStruct1(ByRef $aRandom)
For $i = 1 To 10
DllStructSetData($testStruct1, $i, $aRandom[$i-1])
Next
EndFunc
Func _SetStruct2(ByRef $aRandom)
$k = 0
For $i = 1 To 10
For $j = 1 To 5
DllStructSetData($testStruct2, $i, $aRandom[$k], $j)
$k += 1
Next
Next
EndFunc
Func _GetStruct1()
For $i = 1 To 10
ConsoleWrite(DllStructGetData($testStruct1, $i) & @CRLF)
Next
EndFunc
Func _GetStruct2()
For $i = 1 To 10
For $j = 1 To 5
ConsoleWrite(DllStructGetData($testStruct2, $i, $j) & @CRLF)
Next
Next
EndFunc
Func _SetArray1(ByRef $aRandom)
For $i = 0 To 9
$array1[$i] = $aRandom[$i]
Next
EndFunc
Func _SetArray2(ByRef $aRandom)
$k = 0
For $i = 0 To 9
For $j = 0 To 4
$array2[$i][$j] = $aRandom[$k]
$k += 1
Next
Next
EndFunc
Func _GetArray1()
For $i = 0 To 9
ConsoleWrite($array1[$i] & @CRLF)
Next
EndFunc
Func _GetArray2()
For $i = 0 To 9
For $j = 0 To 4
ConsoleWrite($array2[$i][$j] & @CRLF)
Next
Next
EndFunc
Es siegt das Array
Das sind ja mal gute Neuigkeiten
Ich habe eben einen kleinen Bugg entdeckt, und zwar bezieht sich die _ObjektCreate() Koordinaten immer noch auf die gesammte GUI Oberfläche und nicht auf den Bereich der mit _SetPlayingField() definiert wurde. Hab das Problem aber schon gelöst
Funktionen die demnächst noch kommen:
_TeleportObjectGroup()
_SetObjectSize()
_SetObjectGroupSize()
_SetObjectPicture()
Und es geht weiter:
Ich habe einen haufen neuer/kleiner Funktionen geschrieben, überblick:
;==============================================Funktionen====================================
; _SetPlayingField()
; _CreateObject()
; _MoveObject()
; _ObjectTouch()
; _DeleteObject()
; _ObjectTouchClass()
; _GetObjectPosition()
; _TeleportObject()
; _ObjectSetPicture()
; _ObjectSetClass()
; _ObjectSetTyp()
; _ObjectTouchObject()
; _SetObjectSize()
; _SetObjectGroup()
; _MoveObjectGroup()
; _ObjectGroupTouch()
; _ObjectTouchObjectGroup()
; _ObjectGroupTouchClass()
; _GetObjectGroup()
; _DeleteObjectGroup()
; _GetObjectGroupString()
; _GetObjectGroupArray()
; _TeleportObjectGroup()
; _GetObjectGroupPosition()
; _ObjectGroupSetPicture()
; _ObjectGroupSetClass()
; _ObjectGroupSetTyp()
;==============================================Funktionen====================================
Manche Funktionen konnte ich aber noch nicht testen, da ich sie noch nicht benötigt habe.
Dafür geht es auch beim Spiel weiter:
Ich habe einen Hebel hinzugefügt!
Hier noch ein aktueller Screen:
autoit.de/wcf/attachment/3933/
Den Download gibts im ersten post.
MfG Oger-Lord
Ich habs bei mir mal ausgiebig getestet:
Compiled x64:
Test1(If...Then, Elseif...Then, Endif):
0.0164
Test2(If...Then, If...Then):
0.00852
Test3:(Switch, Case...,EndSwitch
0.00616
Test4:(If...Then, Endif, If...Then, Endif)
0.00712
Compiled x32:
Test1(If...Then, Elseif...Then, Endif):
0.0116
Test2(If...Then, If...Then):
0.00748
Test3(Switch, Case...,EndSwitch:
0.00612
Test4(If...Then, Endif, If...Then, Endif):
0.00632
Run Script:
Test1(If...Then, Elseif...Then, Endif):
0.01456
Test2(If...Then, If...Then):
0.00864
Test3(Switch, Case...,EndSwitch:
0.00752
Test4(If...Then, Endif, If...Then, Endif):
0.00568
Run Script (x64):
Test1(If...Then, Elseif...Then, Endif):
0.024
Test2(If...Then, If...Then):
0.01228
Test3(Switch, Case...,EndSwitch:
0.00908
Test4(If...Then, Endif, If...Then, Endif):
0.00864
Alles anzeigen
Test 3 und 4 unterscheiden sich nur minimal.
Ihr könnt ja auch mal das Script testen
Ich hab heute das Script endlich auf autoitscript.com präsentiert, da ich heute endlich meine 5 posts gesammelt habe um in den Example Scripts berreich posten zu können
Ich wüsste zur Zeit nicht viel, was ich an meinen Funktionenn noch ändern könnte, vieleicht bei ein paar das if ersetzten und das wars.
Ansonsten könnte ich vieleicht noch eine _SetObjectGroupSize() function machen, aber ich hätte keine Ahnung wie ich das umsetzten sollte.
Denn dadurch das alle Bilder verkleinert werden, verändert sich ja auch ihre Position zueinander.
So, ich habe jetzt einen kleinen Editor geschrieben, mit der man Objekte platztieren und verschieben kann. Das ganze ist amer noch ziemlich unfertig aber zur Zeit weiß ich noch nicht, wie nützlich das ganze im endeffekt sein wird....
autoit.de/wcf/attachment/3983/
So, hier gibts alle 3 Scripte: (Jump&Run, Editor und die benötigte GameHelperUDF)
Fehler beim Editor:
ZitatLine 374 (File "D:\Files\AUTOIT\STOLEN\Jump&Run\editor.au3"):
local $picHeight = int($picgrosse[4])
local $picHeight = int(^ ERRORError: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Hol dir vista, bei XP werden die datei infos anders eingetragen -.-
Kannste vergessen:)
Hallo!
Erstmal großes Lob an Olger-Lord ! Das Spiel ist echt gut geworden, es wäre aber noch toll, wenn der Hebel die Kisten danach auch wieder verschwinden lassen kann.
MfG tobi_girst
Muss man diesen Olger-Lord kennen?
Hm, aber erstmal müsste ich mit jemanden zusammen der XP hat ein Script entwickeln, wodurch man die Infos von einer Datei immer richtig auslesen kann, egal ob man windows xp oder vista hat....
Oder funktioniert diese Funktion 100% bei jedem XP benutzter?
;===============================================================================
; Function Name: GetExtProperty($sPath,$iProp)
; Description: Returns an extended property of a given file.
; Parameter(s): $sPath - The path to the file you are attempting to retrieve an extended property from.
; $iProp - The numerical value for the property you want returned. If $iProp is is set
; to -1 then all properties will be returned in a 1 dimensional array in their corresponding order.
; The properties are as follows:
; Name = 0
; Size = 1
; Type = 2
; DateModified = 3
; DateCreated = 4
; DateAccessed = 5
; Attributes = 6
; Status = 7
; Owner = 8
; Author = 9
; Title = 10
; Subject = 11
; Category = 12
; Pages = 13
; Comments = 14
; Copyright = 15
; Artist = 16
; AlbumTitle = 17
; Year = 18
; TrackNumber = 19
; Genre = 20
; Duration = 21
; BitRate = 22
; Protected = 23
; CameraModel = 24
; DatePictureTaken = 25
; Dimensions = 26
; Width = 27
; Height = 28
; Company = 30
; Description = 31
; FileVersion = 32
; ProductName = 33
; ProductVersion = 34
; Requirement(s): File specified in $spath must exist.
; Return Value(s): On Success - The extended file property, or if $iProp = -1 then an array with all properties
; On Failure - 0, @Error - 1 (If file does not exist)
; Author(s): Simucal ([email='Simucal@gmail.com'][/email])
; Note(s):
;
;===============================================================================
Func _GetExtProperty($sPath, $iProp)
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($sPath)
If $iExist = 0 Then
SetError(1)
Return 0
Else
$sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
$sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "\", 0, -1)))
$oShellApp = ObjCreate ("shell.application")
$oDir = $oShellApp.NameSpace ($sDir)
$oFile = $oDir.Parsename ($sFile)
If $iProp = -1 Then
Local $aProperty[35]
For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf ($oFile, $i)
Next
Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf ($oFile, $iProp)
If $sProperty = "" Then
Return 0
Else
Return $sProperty
EndIf
EndIf
EndIf
EndFunc ;==>_GetExtProperty
Ich find das Projekt immernoch toll. *push*
Wie wäre es mit einer zweiten Art davon? Siehe Mario: Spielfigur in der Mitte "festgenagelt" und die Umgebung bewegt sich?
Level-/Punktesystem wären bestimmt auch interessant.
Übrigens hat das mit den unsauberen Kollisionen nichts mit der veränderten Geschwindigkeit zu tun. Auch ohne die Modifizierung kollidiert er nicht perfekt. In der neuesten Version kommt er bei den vertikalen Kistenstapel ganz links nicht einmal nach langem drücken ran.
Deine neuen Funktionen finde ich spitze. =)
Ich werde mich mal in deinen Code reinlesen.
Doch, es hat was mit der Geschwindigkeit zu tun. Wenn du dich mit 4 pixeln geschwindigkeit bewegst und dann einen schritt zu wand machst und einen pixel in der Wand drinnen bist dann wird dieser schritt nicht geweret und du bleibst 3 pixel vor der Wand stehen.
Tja, an das verschieben der Umgebung hatte ich auch schon gedacht, aber ich weiß noch nciht wie ich es außerhalb des aktuellen fensters machensoll....ich könnte die ganzen Bilder auch außerhalb des Fensters erstellen und man sieht sie nur, wenn sie ins fenster kommen.....
Wobei, dafür könnte ich vieleicht noch eine extra funktion einbauen.....mal schaun.
hey, schau mal unter meinen treat: [ offen ] 2D-Spiel-Hilfe
Ich hab das gemacht, aber es ist schlecht, da beim bewegen alles flimmert.