Das mit der Transparents ist gewollt.
Schwierigkeitsgrad wird dadurch erhöht.
Danke fürs Feedback
Das mit der Transparents ist gewollt.
Schwierigkeitsgrad wird dadurch erhöht.
Danke fürs Feedback
Guten Abend
Ich will hier nun mein erstes, kleines Programm vorstellen.
Es ist ein kleines Spiel:
Auf einem 3x3 großen Feld werden nacheinander Farben in zufälliger Reihenfolge und an zufälliger Stelle aufblinken.
Aufgabe ist es diese danach wieder in die richtige Reihenfolge zu bringen, dazu einfach auf die Buttons klicken.
Freue mich auf Meinungen, Verbesserungen und Anregungen.
Bitte geht mit mir nicht so hart ins Gericht
Bin halt ein totaler Anfänger^^
Edit: Variablen werden jetzt vorher deklariert
Hier das Skript:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$anz = 5
$anzcheck = $anz
$code = ""
$answer = ""
$trans = 255
$auf = 0
$Form1 = GUICreate("Farbspiel", 541, 371, 192, 124)
$Label1 = GUICtrlCreateLabel("", 8, 8, 76, 33)
$MenuItem1 = GUICtrlCreateMenu("Start")
$MenuItem2 = GUICtrlCreateMenuItem("Start", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("Anzahl Farbkombinationen", $MenuItem1)
Global $Button [10]
_Buttons(1,0xFF0000,80,56,121,81)
_Buttons(2,0x666666,208,56,121,81)
_Buttons(3,0x00FF00,336,56,121,81)
_Buttons(4,0x666666,80,144,121,81)
_Buttons(5,0x000000,208,144,121,81)
_Buttons(6,0x666666,336,144,121,81)
_Buttons(7,0xFFFF00,80,232,121,81)
_Buttons(8,0x666666,208,232,121,81)
_Buttons(9,0x0000FF,336,232,121,81)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
If $anzcheck = 0 Then
If $answer = $code Then
MsgBox(0,"Richtig","Die Lösung stimmt")
GUICtrlSetData($label1,"")
$answer = ""
$anzcheck = $anz
Else
MsgBox(0,"Falsche Lösung","Die Lösung ist nicht korrekt")
GUICtrlSetData($label1,"")
$answer = ""
$anzcheck = $anz
EndIf
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $MenuItem3
$anz = InputBox("Anzahl der Farbkombinationen festlegen","Geben sie die Anzahl der Farbkombinationen ein","5")
$anzcheck = $anz
Case $Button[1]
_Faerben2(1,0xFF0000)
Case $Button[2]
_Faerben2(2,0x666666)
Case $Button[3]
_Faerben2(3,0x00FF00)
Case $Button[4]
_Faerben2(4,0x666666)
Case $Button[5]
_Faerben2(5,0x000000)
Case $Button[6]
_Faerben2(6,0x666666)
Case $Button[7]
_Faerben2(7,0xFFFF00)
Case $Button[8]
_Faerben2(8,0x666666)
Case $Button[9]
_Faerben2(9,0x0000FF)
Case $MenuItem2
GUICtrlSetData($label1,"")
For $y = 1 To 9
GUICtrlSetBkColor($Button[$y],0xFFFFFF)
Next
$code = ""
For $x = 1 To $anz
For $y = 1 To 9
GUICtrlSetBkColor($Button[$y],0xFFFFFF)
GUICtrlSetState($Button[$y],$GUI_DISABLE)
Next
sleep(1000)
$but = Random(1,9,1)
If $but = 1 Then _Faerben(1,0xFF0000)
If $but = 2 Then _Faerben(2,0x666666)
If $but = 3 Then _Faerben(3,0x00FF00)
If $but = 4 Then _Faerben(4,0x666666)
If $but = 5 Then _Faerben(5,0x000000)
If $but = 6 Then _Faerben(6,0x666666)
If $but = 7 Then _Faerben(7,0xFFFF00)
If $but = 8 Then _Faerben(8,0x666666)
If $but = 9 Then _Faerben(9,0x0000FF)
Sleep(1000)
Next
For $y = 1 To 9
GUICtrlSetBkColor($Button[$y],0xFFFFFF)
GUICtrlSetState($Button[$y],$GUI_ENABLE)
Next
$answer = ""
$trans = 255
$auf = 0
WinSetTrans("Farbspiel","",$trans)
GUICtrlSetData($label1,$anz)
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _Faerben($butt,$farbe)
GUICtrlSetBkColor($Button[$butt],$farbe)
WinSetTrans("Farbspiel","",$trans)
If $auf = 0 Then $trans -= 20
If $auf = 1 Then $trans += 20
If $trans = 255 Then $auf = 0
If $trans = 35 Then $auf = 1
$code &= $butt
EndFunc
Func _Faerben2($butt,$farbe)
$anzcheck -= 1
$answer &= $butt
GUICtrlSetData($label1,$anzcheck)
GUICtrlSetBkColor($Button[$butt],$farbe)
sleep(400)
GUICtrlSetBkColor($Button[$butt],0xFFFFFF)
EndFunc
Func _Buttons($buttonn,$farbe,$left,$top,$breite,$hoehe)
$Button[$buttonn] = GUICtrlCreateButton("", $left, $top, $breite, $hoehe)
GUICtrlSetBkColor($Button[$buttonn],$farbe)
GUICtrlSetState($Button[$buttonn],$GUI_DISABLE)
EndFunc
Stimmt
Habe ich nicht bedacht, weil ich sofort danach wieder etwas einfüge und es so nicht sehe/bemerke^^
Danke
aber dann habe ich das Problem das er wieder nach oben springt...
Danke für die Funktion Großvater
Habe da aber noch ein Problem
Ich will das EditFeld zurücksetzen also "" leeren
Das gelingt mir aber nicht
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("", 639, 438, 192, 124, -1, BitOR($WS_EX_TRANSPARENT,$WS_EX_WINDOWEDGE))
$Edit1 = GUICtrlCreateEdit("Text", 129, 32, 401, 265)
GUISetState(@SW_SHOW)
AdlibRegister("_Refresh",500)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _Refresh()
Static $I = 0
Local $EM_GETSEL = 0xB0, $EM_SETSEL = 0xB1, $WM_SETREDRAW = 0x000B
Local $SelStart = DllStructCreate("INT"), $SelEnd = DllStructCreate("INT")
$I += 1
GUICtrlSendMsg($Edit1, $WM_SETREDRAW, 0, 0)
GUICtrlSendMsg($Edit1, $EM_GETSEL, DllStructGetPtr($SelStart), DllStructGetPtr($SelEnd))
GUICtrlSendMsg($Edit1, $EM_SETSEL, -2, -1) ; Textcursor ans Ende setzen
GuiCtrlSetData($Edit1, "" , 1)
GUICtrlSendMsg($Edit1, $EM_SETSEL, DllStructGetData($SelStart, 1), DllStructGetData($SelEnd, 1))
GUICtrlSendMsg($Edit1, $WM_SETREDRAW, 1, 0)
EndFunc
Was mache ich falsch? Wie gehts richtig?
Sehr nett das du meinen Horizont in Sachen AutoIt erweiterst!
So weit, so gut
Nochmals Danke
Die einfachsten Lösungen sind wohl die Besten^^
Danke Name22
mit der GUIEdit.au3 habe ich mich noch nicht so beschäftigt, habe immer nur die Standard GUI-Funktionen genutzt.
Deine Lösung habe ich gleich eingebaut und sie funktioniert so wie sie es soll.
Oscar ich glaube ein ListView wäre unpassend da es meistens längere Texte sind.
Finde es nur schade das die Lösung nicht einfacher ist.
Ein Parameter mehr der das behebt wäre schon sinnvoll, wie ich finde.
Hallo liebe Autoit-Gemeinde,
ich habe ein kleines Problem mit einer EditBox und GuiCtrlSetData:
-- habe eine Funktion die alle 500ms die EditBox aktualisiert
-- die EditBox wird mit GuiCtrlSetData gefüllt, aber jedes mal wenn das passiert, springt er zum Anfang
-- wenn ich GuiCtrlSetData($Edit,"Text",True) benutze springt er lediglich zum Ende
Ich möchte währenddessen aber weiterhin ganz normal scrollen
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$text = ""
For $x = 1 TO 100
$text &= @Crlf & "Text"
Next
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 639, 438, 192, 124, -1, BitOR($WS_EX_TRANSPARENT,$WS_EX_WINDOWEDGE))
$Edit1 = GUICtrlCreateEdit("", 129, 32, 401, 265)
GUICtrlSetData($edit1,$text)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibRegister("_Refresh",500)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _Refresh ()
GuiCtrlSetData($edit1,$text)
EndFunc
Jemand eine Idee das zu lösen oder zu umgehen?
Danke für alle Antworten
Hier mal mein Vorschlag
#Include <String.au3>
#Include <Array.au3>
$string = ClipGet()
$search = _StringBetween($string,">","<")
_ArrayDisplay($search)
Wie du siehst, musst du dann zwar jeden zweiten Array auslesen, aber das ist nicht so schlimm oder?