Stadt, Land, Fluss -Generator

  • Wieso? Bei Stadt,Land, Fluss muss man doch die Sachen suchen die mit einem ausgewählten Buchstaben beginnen. Und damit niemand einen Buchstaben nennt nur weil er gerade besonders viel dazu kennt ist das Tool da....

    @i7Clock
    Vieleicht könntest du noch die Buchstaben aus dem Alphabet entfernen, wenn sie schonmal dran waren.

  • @EM

    es gibt den Befehl

    [autoit]

    Chr()

    [/autoit]


    , der spart :D


    ja, aber dann kann man es nicht so leicht an diesen Wunsch anpassen

    Vieleicht könntest du noch die Buchstaben aus dem Alphabet entfernen, wenn sie schonmal dran waren.

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate ("A-Z", 144, 35)
    GUISetState (@SW_SHOW)
    GUISetBkColor (0xAAAAAA)

    [/autoit] [autoit][/autoit] [autoit]

    dim $array[26] = [ "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z" ], $i, $y
    Global $AZ = GUICtrlCreateInput ("", 65, 5, 14)
    Global $Start = GUICtrlCreateButton ("Start", 5, 5, 60, 25)
    Global $Stopp = GUICtrlCreateButton ("Stopp", 79, 5, 60, 25)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg ()
    if $nMsg = -3 Then Exit
    If $Start = $nMsg Then
    _AZ($AZ)
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _AZ($AZ)
    Do
    $nMsg = GUIGetMsg ()
    $y = Ubound($array)-1
    $i = Round(Random (0, $y))
    GUICtrlSetData ($AZ, $array[$i])
    Until $Stopp = $nMsg
    if $i > 0 Then
    _ArrayDelete($array,$i)
    Else
    MsgBox(0,"Ende","alle Buchstaben waren 1mal dran!",5)
    Exit
    EndIf
    EndFunc

    [/autoit]

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (11. August 2010 um 19:22)

  • autoBert klar doch !

    [autoit]


    ;65 to 90
    #include <Misc.au3>
    #include <Array.au3>
    Global $Alphabet[26] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    Global $Random, $AllNumbers = 0

    [/autoit][autoit][/autoit][autoit]

    While 1
    If _IsPressed("10") Then
    Local $Chr = _RealRandomChr()
    If @error = -1 Then MsgBox(0, "Error", "Alle Buchstaben bereits ausgewählt.")
    If Not @error Then MsgBox(0, "Der CHR", $Chr)
    EndIf
    If _IsPressed("0D") Then _ArrayDisplay($Alphabet)
    If _IsPressed("1B") Then Exit
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _RealRandomChr()
    $Random = Random(0, 25, 1)
    While 1
    If $Alphabet[$Random] = 0 Then
    $Alphabet[$Random] = 1
    Return Chr($Random + 65)
    ExitLoop
    ElseIf $Alphabet[$Random] = 1 Then
    If _CountArray($Alphabet) = 26 Then
    SetError(-1)
    ExitLoop
    EndIf
    $Random = Random(0, 25, 1)
    EndIf
    WEnd
    EndFunc ;==>_RealRandomChr
    Func _CountArray($Array)
    Local $ArrayCount = 0
    For $i = 0 To UBound($Array) - 1
    $ArrayCount = $ArrayCount + $Array[$i]
    Next
    Return $ArrayCount
    EndFunc ;==>_CountArray

    [/autoit]


    (noch mal verkürzt)

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

    Einmal editiert, zuletzt von EliteMattthias (11. August 2010 um 11:22)

  • Als "Stringfreak" kommen mir keine Arrays ins Haus!^^

    [autoit]

    $Buchstaben = "abcdefghijklmnopqrstuvwxyz"

    [/autoit][autoit][/autoit][autoit]

    Do
    $erg = _BuchstabeRandom($Buchstaben) ;einen zufälligen Buchstaben aus der Liste holen
    Until ConsoleWrite($erg) = 0 ;so lange, bis die Liste leer ist, Buchstaben in die Console schreiben
    ConsoleWrite(@CRLF) ;damit es auch schön aussieht^^

    [/autoit][autoit][/autoit][autoit]

    Func _BuchstabeRandom(ByRef $Buchstaben)
    Local $ret = StringMid($Buchstaben, Random(1, StringLen($Buchstaben), 1), 1) ;zufälligen Buchstaben...
    $Buchstaben = StringReplace($Buchstaben, $ret, "", 1, 1) ;...aus der Liste löschen
    Return $ret ;zufälligen Buchstaben zurückgeben
    EndFunc ;==>_BuchstabeRandom

    [/autoit]