Hi liebe Autoitler und Autoitlerinnen,
ich habe ein Frage unzwar kann man ja Wörter und Zahlen zufällige generieren lassen. Jetzt will ich fragen ob man auch Farben irgendwie generieren lassen kann?
Bei Google hab ich schon gesucht,habe aber nichts gefunden hoffe irgendeiner von euch ob es möglich ist und wenn ja wie.
Zufällig Farben Generieren lassen?
-
- [ offen ]
-
meyermeyer11 -
15. Oktober 2012 um 20:46 -
Geschlossen -
Erledigt
-
-
Hallo,
klar! Du kannst drei Zahöen von 0 bis 255 generieren lassen und dann den Farbcode per:
[autoit]hex($Zahl1, 2)
[/autoit]
zusammenbasteln. "0x" davor und alle hintereinander ergeben einen Hexadezimalen Farbcode.mfg
Hauke -
Hier ist das von hauke96 in Code gegossen:
[autoit]Func RandomColor()
[/autoit][autoit][/autoit][autoit]
$r = Hex(Random(0, 255, 1), 2) ;red
$g = Hex(Random(0, 255, 1), 2) ;green
$b = Hex(Random(0, 255, 1), 2) ;blue
Return "0x" & $r & $g & $b
EndFunc ;==>RandomColorConst $hGUI_EXIT = -3
[/autoit][autoit][/autoit][autoit]
Const $hGUI = GUICreate("RandomColor", 200, 100)
Const $hButtonSetColor = GUICtrlCreateButton("set random backgroundcolor", 25, 25, 150, 50)GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]While True
[/autoit]
$msg = GUIGetMsg()
If ($hGUI_EXIT == $msg) Then
Exit
ElseIf ($msg == $hButtonSetColor) Then
$sColor = RandomColor()
ConsoleWrite($sColor & @CRLF)
GUISetBkColor($sColor)
EndIf
WEnd -
Von mir auch noch etwas...
Spoiler anzeigen
[autoit]GUICreate('')
[/autoit] [autoit][/autoit] [autoit]
GUISetState()GUISetBkColor(_RandomColor())
[/autoit] [autoit][/autoit] [autoit]
Global $i_Timer = TimerInit()While GUIGetMsg() <> -3
[/autoit] [autoit][/autoit] [autoit]
If TimerDiff($i_Timer) >= 2000 Then
GUISetBkColor(_RandomColor())
$i_Timer = TimerInit()
EndIf
WEndFunc _RandomColor()
[/autoit]
Return '0x' & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2)
EndFunc -
Das ist leider nich ganz das was ich meinte,ich meinte das er zum Beispiel das Wort Rot generiert(oder halt eine andere Farbe).
Tschuldigung das ich mich falsch ausgedrückt hab. :pinch: -
[autoit]
Global $a_Farben[8] = ['rot', 'grün', 'blau', 'gelb', 'schwarz', 'weiß', 'lila', 'pink']
[/autoit][autoit][/autoit][autoit]While MsgBox(1, '', $a_Farben[Random(0, 7, 1)]) = 1
[/autoit]
WEndSo etwas? oO
-
Ja sowas hab ich gemeint
Habs jetzt schon anderes gelöst bloß deins ist wesentlich kurz.
Hier mal meine VersionMein Code
[autoit]$Zahl1 = Random(1,6,1)$Zahl2 = Random(1,6,1)$Zahl3 = Random(1,6,1)$Zahl4 = Random(1,6,1)$Zahl5 = Random(1,6,1)$Zahl6 = Random(1,6,1)
[/autoit] [autoit][/autoit] [autoit]
$Farbe1 = ""$Farbe2 = ""$Farbe3 = ""$Farbe4 = ""$Farbe5 = ""$Farbe6 = ""
Farbe1zuOrdnen()Farbe2zuOrdnen()Farbe3zuOrdnen()Farbe4zuOrdnen()Farbe5zuOrdnen()Farbe6zuOrdnen()MsgBox(0,"",$Farbe1&$Farbe2&$Farbe3&$Farbe4&$Farbe5&$Farbe6)Func Farbe1zuOrdnen() If $Zahl1 = 1 Then $Farbe1 = "Rot" EndIf If $Zahl1 = 2 Then $Farbe1 = "Blau" EndIf If $Zahl1 = 3 Then $Farbe1 = "Orange" EndIf If $Zahl1 = 4 Then $Farbe1 = "Lila" EndIf If $Zahl1 = 5 Then $Farbe1 = "Gelb" EndIf If $Zahl1 = 6 Then $Farbe1 = "Grün" EndIfEndFunc
[/autoit]
Func Farbe2zuOrdnen() If $Zahl2 = 1 Then $Farbe2 = "Rot" EndIf If $Zahl2 = 2 Then $Farbe2 = "Blau" EndIf If $Zahl2 = 3 Then $Farbe2 = "Orange" EndIf If $Zahl2 = 4 Then $Farbe2 = "Lila" EndIf If $Zahl2 = 5 Then $Farbe2 = "Gelb" EndIf If $Zahl2 = 6 Then $Farbe2 = "Grün" EndIfEndFunc
Func Farbe3zuOrdnen() If $Zahl3 = 1 Then $Farbe3 = "Rot" EndIf If $Zahl3 = 2 Then $Farbe3 = "Blau" EndIf If $Zahl3 = 3 Then $Farbe3 = "Orange" EndIf If $Zahl3 = 4 Then $Farbe3 = "Lila" EndIf If $Zahl3 = 5 Then $Farbe3 = "Gelb" EndIf If $Zahl3 = 6 Then $Farbe3 = "Grün" EndIfEndFunc
Func Farbe4zuOrdnen() If $Zahl4 = 1 Then $Farbe4 = "Rot" EndIf If $Zahl4 = 2 Then $Farbe4 = "Blau" EndIf If $Zahl4 = 3 Then $Farbe4 = "Orange" EndIf If $Zahl4 = 4 Then $Farbr4 = "Lila" EndIf If $Zahl4 = 5 Then $Farbe4 = "Gelb" EndIf If $Zahl4 = 6 Then $Farbe4 = "Grün" EndIfEndFunc
Func Farbe5zuOrdnen() If $Zahl5 = 1 Then $Farbe5 = "Rot" EndIf If $Zahl5 = 2 Then $Farbe5 = "Blau" EndIf If $Zahl5 = 3 Then $Farbe5 = "Orange" EndIf If $Zahl5 = 4 Then $Farbe5 = "Lila" EndIf If $Zahl5 = 5 Then $Farbe5 = "Gelb" EndIf If $Zahl5 = 6 Then $Farbe5 = "Grün" EndIfEndFunc
Func Farbe6zuOrdnen() If $Zahl6 = 1 Then $Farbe6 = "Rot" EndIf If $Zahl6 = 2 Then $Farbe6 = "Blau" EndIf If $Zahl6 = 3 Then $Farbe6 = "Orange" EndIf If $Zahl6 = 4 Then $Farbe6 = "Lila" EndIf If $Zahl6 = 5 Then $Farbe6 = "Gelb" EndIf If $Zahl6 = 6 Then $Farbe6 = "Grün" EndIfEndFunc
Das Programm generiert 6 Zahlen und sagt dann welche Zahl welche Farbe ist.Außerdem gibt es die Farben dann noch aus. -
Ich würde in jedem Fall den Code von $var nutzen, denn der ist viel übersichtlicher und um einiges leichter erweiterbar.
Deine Version ist ehrlich gesagt nicht besonders effizient.Das "Szenario" ist ein gutes Beispiel für die Verwendung(snotwendigkeit) von Arrays.
Die würde ich mir mal genauer anschauen:Tutorial 1 | Tutorial 2 | Tutorial 3 (engl.)
-
Sorry, aber der Code ist ja wohl einfach nur schlimm. :wacko:
[autoit]
[/autoit][autoit][/autoit][autoit]
Local $sReturnString
For $i = 1 To 6
$sReturnString &= _GetColorByNumber(Random(1,6,1)) & @CRLF
NextMsgBox(0,"",$sReturnString)
[/autoit][autoit][/autoit][autoit]Func _GetColorByNumber($iNum)
[/autoit]
Local $aColors[6] = ["Rot", "Blau", "Orange", "Lila", "Gelb", "Grün"]
If $iNum >= 1 And $iNum <= UBound($aColors) Then Return $aColors[$iNum - 1]
EndFunc
Kürzer, effizienter und dynamischer.
Du solltest dich nochmal mit Funktionsparametern & Abfragen (z.B. Switch) auseinander setzen!lg chess
-
- Offizieller Beitrag
Zitat von chesstigerSorry, aber der Code ist ja wohl einfach nur schlimm. :wacko:
Positiver formulieren! -
Sorry Chef!
Normalerweise würde ich das auch machen, nur soweit ich mich erinnere, habe ich schon Codefetzen von dem TE gesehen, die um Längen besser waren, weswegen mich das gerade ein wenig... verwundert hat.lg chess