Einzelne Strings per Index aus Array holen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von %P%.

    Einzelne Strings per Index aus Array holen

    Hallo Community,

    folgendes Problem hab ich in Visual Basic:

    Ich programmiere zur Zeit ein Hangman Spiel, und hab jetzt alle meine Wörter in ein String Array gepackt.
    Jetzt möchte ich bei Klick auf einen Button "New Game" eine Function callen, die dann aus dem String Array ein neues Wort holt.
    Ok, Function erstellt, Button Click Event called die Function.
    Aber wie hole ich jetzt einzelne Strings aus einem Array?
    Ich hatte mir das folgendermaßen vorgestellt:

    Button Click
    Function kommt zum Einsatz
    Eine Variable wird zufällig mit einer Zahl (von 0 bis Wörter im Array minus 1) belegt
    Mit der Zufallszahl wird aus dem String Array, der String mit dem Index der Zufallszahl in eine neue Variable gelegt.

    Ist das irgendwie so möglich, oder muss man das anders machen?
    Klar, ich könnte für jedes Wort ne neue Variable machen, aber wofür gibts Arrays?

    mfG

    Fabian R.

    edit:
    Hatte gerade irgendwie einen Gedankenblitz und habs geschafft:

    VB.NET-Quellcode

    1. Dim words() As String = {"Lexikon", "Tastatur", "Whiskey", "Kalender"}
    2. Dim word As String
    3. Private Function newword()
    4. word = words(0)
    5. End Function

    Damit wird die Variable "word" zum Wort mit Index 0 aus dem Array "words" (also Lexikon).

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jerdo“ ()

    VB.NET-Quellcode

    1. Dim words() As String = {"Lexikon", "Tastatur", "Whiskey", "Kalender"}
    2. Dim word As String
    3. Private Function newword()
    4. Dim r As New Random
    5. word = words(r.Next(0,words.Count -1))
    6. Return word
    7. End Function


    %P% :thumbup:
    Hello World

    %P% schrieb:

    VB.NET-Quellcode

    1. Dim words() As String = {"Lexikon", "Tastatur", "Whiskey", "Kalender"}
    2. Dim word As String
    3. Private Function newword()
    4. Dim r As New Random
    5. word = words(r.Next(0,words.Count -1))
    6. Return word
    7. End Function


    %P% :thumbup:
    Ja das ist noch nen bisschen cooler, ich verzweifel aber gerade irgendwie dadran ihm zu sagen, dass er nicht 2 mal den gleichen String aus dem Array holen soll, bis man auf Reset klickt. Also er wählt zufällig einen String aus dem Array aus, beim nächsten Mal soll er auch wieder zufällig einen rausholen, aber keinen den er schon einmal hatte, bis man alles zurücksetzt.

    Mein Ansatz sah da folgendermaßen aus:
    Ich hole mit einer Zufallszahl das Wort mit dem Index der Zufallszahl aus dem String Array - klappt
    Ich schreibe die Zufallszahl in ein neues Integer Array - klappt (glaub ich zumindest^^)
    Bei der nächsten neuen Zufallszahl bestimme ich solange eine neue Zufallszahl bis diese nicht mehr in dem Integer Array steht - krieg ich nicht hin^^ schon nen bisschen mit Do While rumprobiert, aber irgendwie will das nicht so richtig.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jerdo“ ()

    Jerdo schrieb:

    Also er wählt zufällig einen String aus dem Array aus, beim nächsten Mal soll er auch wieder zufällig einen rausholen, aber keinen den er schon einmal hatte, bis man alles zurücksetzt.

    Einfach das Array durcheinanderwürfeln und dann die Elemente nach und nach rausholen. Alternativ in eine Queue.

    VB.NET-Quellcode

    1. Dim words() As String = {"Lexikon", "Tastatur", "Whiskey", "Kalender"}
    2. ' durcheinanderwürfeln
    3. Dim r As New Random
    4. words = (From s As String In words Order By r.NextDouble Select s).ToArray