An sich stimme ich Dir zu. In diesem Fall ist es aber nicht so zwingend nötig, weil die Schleife nicht all zu oft durchlaufen werden sollte. Es geht ja nur darum, darauf zu warten, dass das Fenster geschlossen wurde.
Beiträge von Oscar
-
-
Ich hab mir das Archiv grad mal gedownloadet und entpackt. Mein AntiVir beanstandet das nicht.
Es handelt es sich offenbar um einen Fehlalarm, wie das bei AutoIt-Exe-Dateien öfter vorkommt, aufgrund des integrierten Packers.
Es sind aber alle Dateien in dem ZIP-Archiv enthalten. Du kannst Dir also auch eine eigene EXE compilieren, wenn Du ganz sicher sein willst. -
akira2012: Ich habe schon ein paar Ideen, wie man das noch schwerer machen kann. Dauert aber noch ein wenig mit der Umsetzung.
sc4ry: In den gespeicherten Wörtern sind die Umlaute als ae, oe, ue, ss umschrieben und so muss man sie dann "raten". Beispiel: Äpfel wird als A e p f e l also mit 6 Strichen angezeigt.
-
Benutze statt WinWaitClose lieber eine While-Schleife mit WinExists. Das ist sicherer.
[autoit]
[/autoit]
While WinExists('Fenstertitel')
WEnd -
Du hast das Beispiel von Bugfix nicht korrekt übernommen (Zeile 6 weggelassen). Dann hättest Du die Fehlermeldung bereits schon vorher bekommen, denn Du hast bei:
[autoit]
[/autoit]
$Path = @ScriptDir & 'bilder.list'den Backslash vergessen. Ändere das in:
[autoit]
[/autoit]
$Path = @ScriptDir & '\bilder.list'und es sollte funktionieren (so es die Datei 'bilder.list' gibt).
-
Das hier wird niemals ausgeführt. Du fragst dort die Control-ID ab.
[autoit]
[/autoit]
If $button_abbrechen = 1 Then
GUIDelete($gui_2)
EndIfDu brauchst für Dein 2. GUI auch eine MessageLoop-Schleife, in der Du die beiden Buttons abfragst.
-
Das hatte ich auch schon ausprobiert, aber es funktioniert trotzdem nicht. Hmm...
-
Das Spiel kennt wohl jeder. Beim Wettbewerb hatten wir ja schon einige gute Beispiele. Mein Script habe ich noch etwas weiterentwickelt und rausgekommen ist dabei das hier:
Screenshot:
autoit.de/wcf/attachment/13846/
Mit Klick auf den START-Button beginnt das Spiel.
Hat man ein Wort erraten, darf man weiterspielen. Als Punkte bekommt man immer die übriggebliebenen Versuche (Beispiel: Hat man 3 Fehler gemacht, bekommt man 10-3=7 Punkte). Diese Punkte werden addiert bis man ein Wort nicht errät oder auf den STOP-Button klickt. Ist die Gesamtpunktzahl dann größer als einer der Einträge in der Bestenliste, so kann man seinen Namen eingeben und wird dort verewigt.
Danach kann man mit Klick auf den START-Button ein neues Spiel starten.Update 02.08.2011 Version 2.1:
- Es werden jetzt während des Spiels keine Woerter wiederholt (Es sei denn, man hat alle 1500 Wörter durchgeraten. :D).
- Außerdem habe ich den Bug mit der Schriftgröße (bei sehr langen Wörtern) beseitigt.
- Es gibt jetzt auch mehr Wörter (1500 statt vorher 1234)
- Und es wird jetzt angezeigt wie viele Wörter man bereits geraten hat.Das Skript, sowie die Exe und alle nötigen Bilder und Sounds befinden sich im ZIP-Archiv (Anhang).
-
Das würde ich anders lösen:
Eine Seite erstellen und alle Spielerdaten mit GUICtrlSetData bzw. GUICtrlSetImage laden.
Dann einen Vor- und Zurück-Button sowie eine Combobox zum direkten anspringen.Über Tabs finde ich das viel zu umständlich.
-
Ok, Fehler kann ich bestätigen. Ist bei mir auch so.
Verstehe aber immer noch nicht wozu man so viele Tabs braucht. Ist doch auch vom Handling her völlig daneben.
-
akira2012: Warum willst Du alle anderen ausschliessen?
Die Aufgabenstellung lautete: Die zu eratenden Wörter sollten vom "Spieler" selbst vorgegeben werden können
[Klugscheiss on]Da steht nichts davon, dass das zur Laufzeit des Scripts geschehen muss. Der "Spieler" kann durchaus auch vor dem Start des Scripts die Wörter-Datei anpassen. Die Aufgabe ist also erfüllt. [Klugscheiss off]
Aber nichtsdestotrotz hat es viel Spass gemacht und ich gratuliere allen Gewinnern und auch allen anderen, die mitgemacht haben, denn ich denke jeder hat dabei an Erfahrung gewonnen.
P.S.: Ich bin grad noch dabei mein Script weiter zu verfeinern. Stelle ich demnächst in Scripte vor...
-
500 Tabs? Ist ja Wahnsinn.
Vielleicht liegt die Begrenzung dann ganz wo anders:
GUI_MAXCONTROLS: 4093 (Maximum number of controls in GUI box)
Nur so eine Vermutung...
-
Ich habe keine Erklärung, warum das so ist, aber ich habe eine Lösung für das Problem:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
Opt("GUIOnEventMode",1)Global $a = 48 ; Anzahl der Spalten
[/autoit] [autoit][/autoit] [autoit]
Global $sp[$a+1], $w = @DesktopWidth, $h = @DesktopHeight
GUICreate('Matrix', $w, $h, -1, -1, BitOr($WS_MAXIMIZE,$WS_POPUP))
GUISetOnEvent($GUI_EVENT_CLOSE,"_Ende") ; ESC-Taste beendet
GUISetOnEvent($GUI_EVENT_MOUSEMOVE,"_Ende") ; Mausbewegung beendet
Global $key = GUICtrlCreateInput('',0,-30,0,0)
GUISetBKColor(0x000000)
For $i = 0 To $a
$sp[$i] = GUICtrlCreateLabel('', 10+$i*Ceiling($w/($a)), 0, 18, $h, $SS_RIGHT)
GUICtrlSetFont(-1, 12, 800, 0, 'Verdana')
GUICtrlSetColor(-1, 0x00ff00)
Next
GUISetState()
GUISetCursor(16,1) ; Mauszeiger verstecken
$f = 0
While 1
If GUICtrlRead($key) <> '' Then _Ende()
If $f = 0 Then
$y = Random(0, $a, 1)
$y1 = Random(0, $a, 1)
$y2 = Random(0, $a, 1)
EndIf
If Not($y=$y1 And $y=$y2) Then
$r = StringLeft(GUICtrlRead($sp[$y]), 160)
Switch Mod($y, 2)
Case 0
$c = StringRegExpReplace(Chr(Random(32, 122, 1)), '[@]', ' ' & @LF & ' ')
Case Else
$c = StringMid('123 456 789', Random(1, 11, 1), 1)
EndSwitch
$x = $y
Else
$f += 1
If $f = 160 Then $f = 0
$c = ' '
$x = Random(0, $a, 1)
$r = StringLeft(GUICtrlRead($sp[$x]), 160)
EndIf
GUICtrlSetData($sp[$x], $c & @LF & $r)
WEndFunc _Ende()
[/autoit]
GUISetCursor(2,0)
Exit
EndFuncEinfach ein unsichtbares Input-Control abfragen...
Einziger Nachteil: Die Controltasten (SHIFT, STRG etc.) werden nicht berücksichtigt. -
Du könntest aber auch Dein obiges Script benutzen, wenn Du es so änderst:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include<DATE.au3>
#include<FTP.au3>$infonr=123
[/autoit]
$exe_ver=12345
$day=_DateTimeFormat( _NowCalc(),2)
$vhodate = StringReplace(_NowCalcDate(), "/", "-")
$filename=@ScriptDir & StringMid("\", 1 + (StringRight(@ScriptDir, 1) = '\')) & @ComputerName & "_" & StringTrimRight($exe_ver,2) & "_" & $vhodate & ".txt"
msgbox(0,'',$filename) ; nur zum testen
; Rest des ScriptsDann funktioniert es sowohl im Hauptpfad als auch in einem beliebigen Unterverzeichnis.
-
[autoit]
[/autoit]
While <Bedingung>
While 1
Befehle...
If <Bedingung> Then ExitLoop
WEnd
WEnd -
Die 1.74er Version wird doch schon länger genutzt und erst jetzt kommt eine Warnung bei 2 Usern ?Also ich habe eine gute Ausrede...
Ich benutze Scite ziemlich selten (Notepad++) und bin nur durch diesen Thread darauf gestossen.
-
Ich habe Scite jetzt mal auf die 1.75er Version geupdatet und seitdem ist die Trojaner-Warnung weg. Hmmm...war es nun einer oder nicht?
-
Kann das bestätigen! Ist bei mir genauso. Es kommt auch die Viruswarnung (die Gleiche, wie bei Dir).
Ich habe ebenfalls die 1.74er Version und benutze auch Avira Antivir (PersonalEdition Premium).
-
[autoit]
[/autoit]
MsgBox(48,"123","das ist dein name: " & GUICtrlRead($Input1) & " ") -
GUICtrlRead($Input1) und es geht.