Beiträge von Oscar
-
-
Ich hab ihn wiederhergestellt.
-
Eigentlich gibt es dafür ja bereits eine Funktion in den UDFs: _TicksToTime()
Wenn man sich die Funktion aber mal anschaut:
[autoit]
[/autoit]
Func _TicksToTime($iTicks, ByRef $iHours, ByRef $iMins, ByRef $iSecs)
If Number($iTicks) > 0 Then
$iTicks = Round($iTicks / 1000)
$iHours = Int($iTicks / 3600)
$iTicks = Mod($iTicks, 3600)
$iMins = Int($iTicks / 60)
$iSecs = Round(Mod($iTicks, 60))
; If $iHours = 0 then $iHours = 24
Return 1
ElseIf Number($iTicks) = 0 Then
$iHours = 0
$iTicks = 0
$iMins = 0
$iSecs = 0
Return 1
Else
SetError(1)
Return 0
EndIf
EndFunc ;==>_TicksToTime
[autoit]
muss ich sagen, dass ist irgendwie ziemlich umständlich.
Ich finde das so wesentlich besser:
[/autoit]
Func _TicksToTime($iTicks)
Local $iHours, $iMins, $iSecs = Int($iTicks / 1000)
$iHours = Int($iSecs / 3600)
$iSecs = Mod($iSecs, 3600)
$iMins = Int($iSecs / 60)
$iSecs = Mod($iSecs, 60)
Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
EndFunc ;==>_TicksToTime -
Es gibt eine neue Version (siehe Post #1).
-
Die absoluten Unterschiede könnten am Prozessor (und der Festplatte) liegen, aber relativ (alle Tests auf demselben Rechner) müssten die Unterschiede vergleichbar sein.
Ich habe die Tests nicht jeweils nach einem Neustart gemacht, dass heißt bei meinen Tests spielte die Geschwindigkeit des mehrmaligen Aufrufs eine Rolle.
Wenn BugFix's Version bei Dir so schlecht abschneidet, hat das vermutlich mit dem "Scripting.FileSystemObject" zu tun.
Vielleicht muss das Object erst einmal aufgerufen worden sein (weil da von Windows noch irgendwas geladen wird)? -
Was man hingegen beachten sollte, ist die Tatsache, dass nicht jedes Programm auch mehrere Kerne unterstützt.
Und dann kann es evtl. durchaus sinnvoll sein einen schnelleren DualCore einem langsamer getakteten QuadCore vorzuziehen. Es kann also sein, dass ein 2x3.2 GHz DualCore schneller ist, als ein 4x3.0 GHz QuadCore.
Das kommt im wesentlichen auf die Programme an.Um genau zu sein, ist nicht nur die Taktfrequenz entscheidend. Die Prozessor-Architektur (Befehlssatz, Caches, usw.) spielt da auch eine große Rolle.
-
Das spielt eine große Rolle, denn wenn man bereits einmal alle Dateien durchgescannt hat, dann befinden sich diese beim zweiten Scan im Festplatten-Cache und der zweite Scan geht dann wesentlich schneller.
Also entweder mehrere Durchläufe machen und das Ergebnis mitteln oder gleiche Anfangsbedingungen schaffen (z.B. jeweils nach einem Neustart).Edit:
Tweaky: Ich kann Dein Ergebnis nicht bestätigen. BugFix's Version ist bei meinen Tests (jeweils mehrere Scans hintereinander) etwas schneller als Deine Version. Noch schneller ist allerdings meine Version
Spoiler anzeigen
[autoit]
[/autoit]
;===============================================================================
; Function Name: _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
; Description:: gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
; einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
Local $hSearch, $sFile, $sReturn = ''
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
$sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
Return $sReturn
EndFuncJeweils so aufgerufen (Funktionsaufruf natürlich entsprechend):
[autoit]
[/autoit]
$iTimer = TimerInit()
$a = _RecursiveFileListToArray(@WindowsDir, '', 1)
ConsoleWrite(TimerDiff($iTimer) & @CRLF)
_ArrayDisplay($a) -
Natürlich läuft jeder einzelne Kern mit der angegeben Taktfrequenz. Mein QuadCore z.B. mit 4x3.0 GHz.
-
AGBs des Anbieters lesen...
Zitat5.3 Dem Nutzer ist es darüber hinaus untersagt, das Online-Spiel (einschließlich aller einzelner Internetseiten) mit anderen Programmen außer dem Internet-Browser oder dem zur Verfügung gestellten Client-Programm aufzurufen. Dies bezieht sich insbesondere auf so genannte Bots sowie andere Tools, die das Webinterface ersetzen oder ergänzen sollen.
...und unsere Forenregeln beachten!
ZitatAutomatisierung von Webseiten oder Tools, die das in ihren AGBs verbieten
[Thread closed]
-
Ich habe gerade das hier gefunden: http://msdn.microsoft.com/de-de/library/k7d53k7e(VS.80).aspx
Kann es sein, das der Debugger läuft, obwohl Du nicht als Administrator angemeldet bist? -
Ich habe nochmal eine neue Version hochgeladen. Den ganzen _IsPressed-Kram habe ich jetzt entsorgt und alles mit Events gemacht (warum eigentlich nicht gleich?
).
So nebenbei gibt es jetzt noch drei neue Icons (Pfeile).@DevilsCry: Teste doch mal, ob das mit der neuen Version immer noch der Fall ist. An XP kann es nicht liegen, das habe ich auch.

-
funkey: Achso! Jetzt verstehe ich! Nee, das ist so nicht gewollt. Ok, wird behoben...
@DevilsCry: Hmmm...und was soll mir das jetzt sagen? Was ist denn eine "unbehandelte Win32-Ausnahme"?
-
Doch, ich: 42

Wie lautete die Frage zu Deinem Problem eigentlich?
-
So, Version 1.0 ist fertig!
Die Farben habe ich noch etwas angepasst und es gibt jetzt auf der linken Seite ein Hintergrundbild. Außerdem gibt es noch ein paar zusätzliche Sounds und den Vorschlag von BugFix bezüglich der Zusatzpunkte habe ich mit eingebaut.
Eine "Pause"-Taste ist auch noch dazugekommen.@DevilsCry: Das mit dem Debugger verstehe ich nicht so ganz?!
funkey: Das mit der Leertaste ist so eigentlich nicht vorgesehen. Das passiert bloß, weil der Focus auf der "Start"-Taste liegt. Man wechselt auch eigentlich nicht zum nächsten Wort, sondern startet das Spiel von vorn.
Diese Funktionalität möchte ich aber eigentlich beibehalten. Man kann übrigens auch während des spielens die Wortlänge wechseln. Das Programm generiert dann das nächste Wort mit der neuen Wortlänge. -
Ich wusste doch, dass ich mich auf euch verlassen kann.
Ihr habt immer tolle Verbesserungsvorschläge. Werde ich noch einbauen.
@Commander21: Nachdem man die "Pfeil nach unten"-Taste gedrückt hat, soll man den Buchstaben nicht mehr bewegen können. Das ist so gewollt! Icons sind von Iconspedia.
Die Version 0.9 hat übrigens noch einen Bug (gerade entdeckt): Wenn man alle Wörter einer Schwierigkeitsstufe (Wortlänge) durch hat, kommt als Wort eine "1" und danach stürzt das Script ab (Array-Fehler). Ist in der nächsten Version gefixt.
-
-
Ja, Inspiration war Lettris!
Und wegen diesem Thread wollte ich sowas in der Art machen.
Halt mal ein Spiel für die Kleinen. Wobei mich mal interessieren würde, ob die Geschwindigkeit der herabfallenden Buchstaben so in Ordnung ist oder ob die zu schnell fallen. -
Mein Beitrag zum "Kinder-Paket": Wortsturz (Spiel für Kinder)
-
Hier mal ein Programm für Kinder:
Wortsturz
Version 1.4 ( 27.06.09 )Änderungen:
- Play-Button hinzugefügt (kann auch über die "s"-Taste aufgerufen werden. Beim Aufruf des Buttuns wird das Wort, das sich unten rechts befindet, ausgesprochen.
Dazu muss aber das deutsche Sprachpaket vom MS.Reader installiert sein (von hier downloaden). Damit man nicht auch noch den MS.Reader installieren muss, kann man dieses kurze Script von progandy verwenden:Spoiler anzeigen
[autoit]
[/autoit]
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ebook","Version")
If @error Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ebook","Version","REG_SZ","2.2")
MsgBox(0, 'SAPI German Install Patch', "Installieren sie jetzt das deutsche Sprachpaket von " & @CRLF & "http://www.microsoft.com/reader/de/downloads/tts.mspx" & @CRLF & "Klicken sie danach auf OK.")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ebook")
Else
MsgBox(0, 'SAPI German Install Patch', "Sie haben den Microsoft Reader installiert und benötigen keinen Patch. "&@CRLF&"Gegebenenfalls müssen sie auf die neueste Version updaten über "&@CRLF&"http://www.microsoft.com/reader/de")
EndIf
Spielerklärung:
Bei dem Spiel geht es darum, die Buchstaben von zufällig ausgewählten Wörtern in die richtige Reihenfolge zu bringen.
Das aktuelle Wort wird unten rechts angezeigt und die Buchstaben fallen von oben (Tetris-like) in zufälliger Reihenfolge herunter.
Mit den Cursor-Tasten (links & rechts) kann man den Buchstaben um eine Spalte nach links oder rechts bewegen. Die "Pfeil nach unten"-Taste beschleunigt den "Sturz".
Hat man die Buchstaben in der richtigen Reihenfolge zusammengesetzt, so erhält man so viele Punkte, wie das Wort Buchstaben hatte und der Zähler für die "richtigen Wörter" wird um eins erhöht.
Bonuspunkte bekommt man, wenn man auf die "Pfeil nach unten"-Taste drückt. Je früher und umso öfter pro Wort, umso mehr Zusatzpunkte gibt es (Danke, BugFix!).
Bei falscher Reihenfolge bekommt man keine Punkte und der Zähler für die "falschen Wörter" wird um eins erhöht.Wer möchte, kann die Wortliste noch erweitern. Die Datei "Wortliste.txt" enthält die Wörter.
Der Aufbau der Datei ist relativ einfach:
Für die Wortlängen (3, 4, 5, 6, 7, 8, 9 und 10 Buchstaben) gibt es jeweils eine Zeile und die Wörter sind innerhalb der Zeile mit Kommata (keine zusätzlichen Leerzeichen!) getrennt.Screenshots:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Programm, Script, Wörterliste, Sounds und Icons befinden sich im ZIP-Archiv (Anhang). -
Doch! Hiermit: _MultiFileCopy