Wörter per Zufall in Textbox anzeigen

  • VB6

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Wörter per Zufall in Textbox anzeigen

    hey ich möchte in vb eine art lernprogramm für englisch machen.

    Ich möchte, dass man auf einen Button klickt und dann in einer Textbox ein zufälliges deutsches Wort von 20 erscheint.

    Dann soll man in einer zweiten Inputbox, das englische eingeben und wenn es richtig ist, soll dann da stehen "richtig"!



    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. Dim wahl As Integer
    3. Randomize
    4. wahl = Int(Rnd * 20)
    5. End Sub
    6. Private Sub Command2_Click()
    7. End
    8. End Sub




    Ich hoffe ihr könnt mir helfen ich habe keinen schimmer ?( :wacko:
    Nunja recht simpel gehalten wäre es wenn du alle Vokabeln in einem Array stehen hast.
    Mit Hilfe von nem zufälligen int wählst du dann aus dem array ein wort und lädst das in die Textbox

    Dann lädst du aus der 2ten Textbox die eingabe in ein string und vergleichst den mit einem 2ten array. Falls identisch gibste über ein Label oder sonst was "Richtig" aus.

    Visual Basic-Quellcode

    1. textbox1.text = array_ger(zufallszahl)

    Visual Basic-Quellcode

    1. Dim ArrDE(3) As String = {"Hund", "Katze", "Maus", "Kuh"}
    2. Dim ArrEN(3) As String = {"Dog", "Cat", "Mouse", "Cow"}
    3. Dim r As New Random
    4. Dim Sel As Integer = r.Next(0,ArrDE.Length)
    5. MsgBox("Die übersetzung für " & ArrDE(Sel) & " ist:" & vbnewline & ArrEN(Sel))


    link_275 :thumbup:
    Hello World
    Hallo Leute .. hier gehts um VB6, also keine My.Settings oder New Random.

    Visual Basic-Quellcode

    1. Dim Index As Integer
    2. Dim WordsD(20) As String
    3. Dim WordsE(20) As String
    4. WordsD(0) = "Hallo"
    5. WordsE(0) = "Hello"
    6. WordsD(1) = "Haus"
    7. WordsE(1) = "House"
    8. ' hier natürlich in einer Schleife oder ähnliches aus einer Textdatei laden
    9. Sub Command1_Click()
    10. Randomize
    11. Index = Rnd * 20
    12. TextBox1.Text = WordsD(Index)
    13. End Sub
    14. Sub Command2_Click()
    15. If TextBox2.Text = WordsE(Index) Then
    16. MsgBox("Richtig")
    17. Command1_Click()
    18. End If
    19. End Sub


    So mal fix aus dem Kopf geschrieben.
    Das hat mit dumm nichts zu tun. Lern die Basics.
    Was er damit meinte, dass du es vielleicht aus einer Textdatei laden willst. Was den Vorteil bringt, dass beliebig viele Wörter und deren Übersetzung zentral gespeichert, und beim Starten des Programms eingelesen werden können. Du kannst Sie z.B. mit Seperator Zeile für Zeile sichern, und diese dann gesplittet in ein Array schieben. z.B.
    wenn die Textdatei so aussieht:

    Quellcode

    1. hund=dog
    2. katze=cat
    3. hello=hallo

    Und dann eben diese Datei Zeile für Zeile in einer Schleife einlesen, splitten bei "=" und diese jeweils in Array ArrDE oder ArrEN

    Visual Basic-Quellcode

    1. 'in der schleife zum auslesen(File.ReadAllText o.ä.), mit "CL" als Laufvariable, welche die momentane Zeile darstellt:
    2. Dim TR() As String = CL.Split("=")
    3. ArrDE(i) = TR(0)
    4. ArrEN(i) = TR(1)



    link_275 :thumbup:
    Hello World

    Visual Basic-Quellcode

    1. 'in der schleife zum auslesen(File.ReadAllText o.ä.), mit "CL" als Laufvariable, welche die momentane Zeile darstellt:
    2. Dim TR() As String = CL.Split("=")
    3. ArrDE(i) = TR(0)
    4. ArrEN(i) = TR(1)

    Die Kommentare werden vom Compiler ignoriert, nicht von dir. -> In der Schleife in der du die Textdatei ausliest, zeile für zeile. Dort muss dann der Code rein.


    link_275 :thumbup:
    Hello World
    Du kannst die *.Exe im Debug Ordner nicht öffnen? Glaub Ich nicht 8|

    Naja, das is jedenfalls der Source:

    Visual Basic-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim ofd As New OpenFileDialog
    5. If ofd.ShowDialog() = DialogResult.OK Then
    6. TextBox1.Text = ofd.FileName
    7. End If
    8. End Sub
    9. Private ArrDE(3) As String
    10. Private ArrEN(3) As String
    11. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    12. Dim c As Integer = 0
    13. For Each CL As String In File.ReadAllLines(TextBox1.Text)
    14. Dim TLine As String = CStr(CL)
    15. Dim TR() As String = TLine.Split("=")
    16. ArrDE(c) = TR(0)
    17. ArrEN(c) = TR(1)
    18. c += 1
    19. Next
    20. Fuellen()
    21. End Sub
    22. Sub Fuellen()
    23. ListBox1.Items.Clear()
    24. ListBox1.Items.Clear()
    25. RichTextBox1.Text = ""
    26. For i As Integer = 0 To ArrDE.Length - 1
    27. RichTextBox1.Text &= ArrDE(i) & " heißt übersetzt " & ArrEN(i) & vbNewLine
    28. ListBox1.Items.Add(ArrDE(i))
    29. ListBox2.Items.Add(ArrEN(i))
    30. Next
    31. End Sub
    32. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    33. TextBox1.Text = My.Application.Info.DirectoryPath & "\tr_list.txt"
    34. End Sub
    35. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    36. ListBox2.SelectedIndex = ListBox1.SelectedIndex
    37. End Sub
    38. Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
    39. ListBox1.SelectedIndex = ListBox2.SelectedIndex
    40. End Sub
    41. End Class

    Du siehst, ist ganz einfach gehalten, quick'n dirty sozusagen :P

    link_275
    Hello World
    @LucaWelker: Autsch ... wieder überseh'n dass das ja VB6 ist :wacko:
    Mein Fehler :whistling: Aber Ich denke mit ein wenig Überlegen, kann der Code der VB-Version entsprechend angepasst werden ;) Von VB6 selbst hab Ich sogut wie keine Ahnung :huh:


    link_275
    Hello World
    Ich bin jetzt etwas weiter

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. Dim wahl As Integer
    3. Randomize
    4. wahl = Int(Rnd * 20)
    5. Select Case wahl
    6. Case 0
    7. Text1.Text = "Schleichwerbung"
    8. Case 1
    9. Text1.Text = "Königreich"
    10. Case 2
    11. Text1.Text = "Freiheit"
    12. Case 3
    13. Text1.Text = "Magie"
    14. Case 4
    15. Text1.Text = "Welt"
    16. Case 5
    17. Text1.Text = "Eindruck"
    18. Case 6
    19. Text1.Text = "Essig"
    20. Case 7
    21. Text1.Text = "Partei"
    22. Case 8
    23. Text1.Text = "Übertreibung"
    24. Case 9
    25. Text1.Text = "Roman"
    26. Case 10
    27. Text1.Text = "Gedanke"
    28. Case 11
    29. Text1.Text = "Zuschauer"
    30. Case 12
    31. Text1.Text = "Klimaanlage"
    32. Case 13
    33. Text1.Text = "Innenhof"
    34. Case 14
    35. Text1.Text = "Gastgeber"
    36. Case 15
    37. Text1.Text = "Lebhaft"
    38. Case 16
    39. Text1.Text = "Besonders"
    40. Case 17
    41. Text1.Text = "Umbequem"
    42. Case 18
    43. Text1.Text = "Stern"
    44. Case 19
    45. Text1.Text = "Seefahrer"
    46. Case 20
    47. Text1.Text = "Tastatur"
    48. End Select
    49. End Sub
    50. Private Sub Command2_Click()
    51. End
    52. End Sub




    jetzt muss ich das aber noch irgendwie so machen, dass ich das englische wort irgendwo eingebe und dann richtig oder falsch kommt
    Ich bin jetzt etwas weiter

    Nein eigentlich nicht, das ist absolut hässlich und zudem schlechter Code Stil. Aber meinetwegen ignorier die Hilfe die dir gegeben ist und mach es auf deine Art..


    link_275
    Hello World

    link_275 schrieb:

    @LucaWelker: Autsch ... wieder überseh'n dass das ja VB6 ist :wacko:
    Mein Fehler :whistling: Aber Ich denke mit ein wenig Überlegen, kann der Code der VB-Version entsprechend angepasst werden ;) Von VB6 selbst hab Ich sogut wie keine Ahnung :huh:

    link_275 schrieb:

    link_275


    Jup haste Vollkommen recht.

    @ThreadStarter:
    Was machst du wenn vllt. iwann mal 1000 Wörter hast? Copy Past?! ;) Dann wird es richtig assii...
    Nimm ne schleife um dein Array zu befüllen und greif auf den mit einer Zufallszahl zu das ist nicht schwer.. dafür musst du dich halt ein bisschen damit befassen...

    Dodo und Link haben dir doch eigl. den Grundstein gelegt jetzt ist nunmal ein bisschen Eigeniniziative gefragt...

    lg.

    LucaWelker
    lg.

    LucaWelker
    Wenn du die Wörter nicht aus einer Textdatei laden willst, dann musst du eben Manuell die Arrays befüllen. Hierzu brauchste aber kein Select Case.

    Du nimmst den Code den ich dir gegeben habe und fügst nun alle deine Wörter zum Array

    Visual Basic-Quellcode

    1. WordsD(0) = "Hallo"
    2. WordsE(0) = "Hello"
    3. WordsD(1) = "Haus"
    4. WordsE(1) = "House"
    5. WordsD(2) = "Tastatur"
    6. WordsE(2) = "Keyboard"
    7. WordsD(3) = "Maus"
    8. WordsE(3) = "Mouse"
    9. WordsD(4) = "Kind"
    10. WordsE(4) = "Child"
    11. WordsD(6) = "Mädchen"
    12. WordsE(6) = "Girl"


    und so weiter, nach diesem Schema wirst du das doch hinbekommen oder etwa nicht? Das war aber auch schon aus dem ersten Post klar geworden .. EIGENTLICH ... aber da du anscheint NULL BASICS kannst wird das sicher schwer werden und du wirst wegen jedem kleinen popel hier nachfragen.

    Prinzipiell hast du nun alles was du benötigst, sogar fast Copy und Paste fertigen Code.