Mathe-Spiel Fehler

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Crayne.

    Mathe-Spiel Fehler

    Hallo,

    ich habe einen kleinen Bruder, der gerne ein Mathe-Spiel hätte. Da ich mich in letzter Zeit mit VB6 beschäftigt habe, dachte ich, dass ich ihm einfach mal eins programmiere. Meine Idee war wie folgt:

    So sieht es aus:

    Unter nächster Level ist der Starten Button.

    Dann habe ich 5 Textfelder.

    Text1 (Zahl), Text2(Zeichen), Text3(Zahl) sollen die Aufgabe darstellen.

    Das Feld daneben habe ich Ergebnis genannt, da soll halt das Ergebnis rein :)

    Dann habe ich noch den Prüfenbutton, der soll prüfen ob die Aufgabe richtig ist.

    Jetzt kommt mein Problem: Ich habe Text4 (aktuelle Level) mit dem nächster level button verknüpft. Dazu habe ich die If-Funktion verwenden, allerdings funktioniert das nicht. Ich wollte, dass ab Level 6 nicht mehr addiert, sonder subtrahiert wird.

    Ich finde einfach nicht den Fehler und bräuchte ein wenig Hilfe.

    Danke im Vorraus!

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. Command1.Visible = False
    3. Text4.Visible = True
    4. Label3.Visible = True
    5. Text4.Text = 1
    6. If Text4.Text = "1" Or "2" Then
    7. Randomize -Timer
    8. a = Int(99 * Rnd) + 1
    9. b = Int(99 * Rnd) + 1
    10. Text1.Text = a
    11. Text3.Text = b
    12. Text2.Text = "+"
    13. End If
    14. End Sub
    15. Private Sub Command2_Click()
    16. Command2.Visible = False
    17. Text4.Text = Text4.Text + 1
    18. Randomize -Timer
    19. a = Int(99 * Rnd) + 1
    20. b = Int(99 * Rnd) + 1
    21. c = Int(11 * Rnd) + 1
    22. d = Int(11 * Rnd) + 1
    23. If Text4.Text = "2" Or "3" Or "4" Or "5" Then
    24. Text1.Text = a
    25. Text3.Text = b
    26. Text2.Text = "+"
    27. ElseIf Text4.Text = "6" Or "7" Or "8" Or "9" Or "10" Then
    28. Text1.Text = a
    29. Text3.Text = b
    30. Text2.Text = "-"
    31. ElseIf Text4.Text = "11" Or "12" Or "13" Or "14" Or "15" Then
    32. Text1.Text = c
    33. Text2.Text = "*"
    34. Text3.Text = d
    35. ElseIf Text4.Text = "16" Or "17" Or "18" Or "19" Or "20" Then
    36. Text1.Text = a
    37. Text2.Text = "+" Or "-"
    38. Text3.Text = b
    39. ElseIf Text4.Text = "21" Then
    40. Text1.Text = a
    41. Text2.Text = "*"
    42. Text3.Text = b
    43. Else
    44. MsgBox "Herzlichen Glückwunsch, sie können im Kopf rechnen!" _
    45. , 64, "Sieg"
    46. End If
    47. End Sub
    48. Private Sub Command3_Click()
    49. End
    50. End Sub
    51. Private Sub Prüfen_Click()
    52. c = Int(Text1.Text)
    53. d = Int(Text3.Text)
    54. If c + d = Ergebnis.Text _
    55. Or c - d = Ergebnis.Text _
    56. Or c * d = Ergebnis.Text Then
    57. MsgBox "Richtig! Klicken sie auf - Nächstes Level - um weiter zu spielen!", 64, "Richtig"
    58. Command2.Visible = True
    59. Ergebnis.Text = ""
    60. Text1.Text = ""
    61. Text2.Text = ""
    62. Text3.Text = ""
    63. Else
    64. MsgBox "Falsch", 64, "Falsch!"
    65. End If
    66. End Sub
    Hi.

    Dein Fehler sind folgende Abfragen:

    Visual Basic-Quellcode

    1. If TextX.Text = "x" Or "y" Or "z"
    Richtig würde es so heißen:

    Visual Basic-Quellcode

    1. If TextX.Text = "x" Or TextX.Text = "y" Or TextX.Text = "z"
    Mit einem

    Visual Basic-Quellcode

    1. Select Case Text4.Text
    2. Case "x", "1" ' usw.
    3. Case "y", "2"
    4. Case "z", "3"
    5. End Select

    lässt sich der Code auch besser lesen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Danke, aber...

    Danke, war aber auch ein dummer Fehler naja.
    Ich habe jetzt mal ne Frage.
    Ich würde es gerne noch so machen, dass man für jede Frage nur ´ne gewisse Zeit hat.
    Und die Sekunden die nicht vergangen sind gelten dann als Punkte.
    Ich hätte also gerne noch ne Punktzahl in dem Spiel.
    Geht das?
    SuFu: TimeSpan => 273 Einträge.
    Quelltext:

    Visual Basic-Quellcode

    1. Dim ts = New TimeSpan

    mit der Maus auf TimeSpan klicken, danach Taste F1 => Hilfe. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Crayne,
    Zeitabläufe kannst du mit einem Timer-Control steuern.

    Visual Basic-Quellcode

    1. Private Sek As Long
    2. Private Sub Form_Load()
    3. Timer1.Interval = 1000
    4. Timer1.Enabled = True
    5. End Sub
    6. Private Sub Timer1_Timer()
    7. Label1.Caption = Sek
    8. Sek = Sek + 1
    9. If Sek = 30 Then Timer1.Enabled = False
    10. End Sub


    @RodFromGermany:
    Das sieht nach .Net-Code aus. Die Frage bezog sich auf VB6.
    Gruss,

    Neptun