Programm für die Schule

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Programm für die Schule

    Hallo,

    ich heiße Pascal und habe ein Problem mit dem Programmieren von Hangman(Galgenmännchen). Ich muss es für die Schule demnächst fertig haben und komme nicht weiter. Ich habe eine Anleitung aus Youtube verwendet, die für Visual Basic 6 war, leider habe ich Visual Basic 2005 (also Version 8). Jetzt habe ich ein paar Fehlermeldungen und das Programm macht auch nichts. Ich habe es schon probiert selbst hinzukriegen, leider klappt es nicht so richtig :D

    Daher hoffe ich ihr könnt mir helfen.

    Hier der Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Ratewˆrter(19) As String
    3. Dim Ratewort As String
    4. Dim Suchwort As String
    5. Dim Buchstabe As String
    6. Dim Lebenverloren As Boolean
    7. Dim Leben As Integer
    8. Dim max As Integer
    9. Dim min As Integer
    10. Dim zufall As Integer
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. Ratewˆrter(0) = "PUSTEKUCHEN"
    13. Ratewˆrter(1) = "FRIEDRICH"
    14. Ratewˆrter(2) = "OBSTSALAT"
    15. Ratewˆrter(3) = "HYUNDAI"
    16. Ratewˆrter(4) = "SAMSUNG"
    17. Ratewˆrter(5) = "APPLE"
    18. Ratewˆrter(6) = "WASCHMASCHINE"
    19. Ratewˆrter(7) = "UNTERRICHT"
    20. Ratewˆrter(8) = "KREISVERKEHR"
    21. Ratewˆrter(9) = "MUTTER"
    22. Ratewˆrter(10) = "KOPFKISSEN"
    23. Ratewˆrter(11) = "TRANSPORTMITTEL"
    24. Ratewˆrter(12) = "LIMONADE"
    25. Ratewˆrter(13) = "KALENDER"
    26. Ratewˆrter(14) = "FEIERTAG"
    27. Ratewˆrter(15) = "WETTERFROSCH"
    28. Ratewˆrter(16) = "ANGSTHASE"
    29. Ratewˆrter(17) = "INTERNETBROWSER"
    30. Ratewˆrter(18) = "LAUTSPRECHER"
    31. Ratewˆrter(19) = "SOMMERFERIEN"
    32. min = 0
    33. max = 19
    34. Randomize()
    35. zufall = Int(Rnd() * (max - min + 1)) + min
    36. Ratewort = Ratewˆrter(zufall)
    37. For i = 1 To Len(Ratewort)
    38. Suchwort = Suchwort + "-"
    39. Next
    40. Label1.Text = Suchwort
    41. Leben = 15
    42. Label2.Text = Leben
    43. End Sub
    44. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    45. Buchstabe = TextBox1.Text
    46. Buchstabe = UCase(Buchstabe)
    47. TextBox1.Text = ""
    48. If Len(Buchstabe) = 1 Then
    49. If Asc(Buchstabe) > 64 And Asc(Buchstabe) < 91 Then
    50. Lebenverloren = True
    51. For i = 1 Len(Ratewort)
    52. If Mid(Ratewort, i, 1) = Buchstabe Then
    53. Mid(Suchwort, i, 1) = Buchstabe
    54. Label1.Text = Suchwort
    55. Lebenverloren = False
    56. If Suchwort = Ratewort Then
    57. Box = MsgBox("Sie haben Gewonnen! Wollen Sie noch eine Runde spielen?", 36, "Gewonnen")
    58. If Box = 6 Then
    59. Randomize()
    60. zufall = Int(Rnd() * (max - min + 1)) + min
    61. Ratewort = Ratewˆrter(zufall)
    62. Suchwort = ""
    63. For j = 1 To Len(Ratewort)
    64. Suchwort = Suchwort + "-"
    65. Next
    66. Label1.Text = Suchwort
    67. Leben = 15
    68. Label2.Text = Leben
    69. Else
    70. End
    71. End If
    72. End If
    73. End If
    74. Next
    75. If Lebenverloren = True Then
    76. Leben = Leben - 1
    77. Label2.Text = Leben
    78. End If
    79. If Leben = 0 Then
    80. Box = MsgBox("Sie haben Verloren! Das gesuchte Wort war " + Ratewort + "! Wollen Sie noch eine Runde spielen?", 36, "Verloren")
    81. If Box = 6 Then
    82. Randomize()
    83. zufall = Int(Rnd() * (max - min + 1)) + min
    84. Ratewort = Ratewˆrter(zufall)
    85. Suchwort = ""
    86. For i = 1 To Len(Ratewort)
    87. Suchwort = Suchwort + "-"
    88. Next
    89. Label1.Text = Suchwort
    90. Leben = 15
    91. Label2.Text = Leben
    92. Else
    93. End
    94. End If
    95. End If
    96. Else
    97. Box = Msgbox("Bitte nur BUCHSTABEN eingeben!",0,"Fehler"!)
    98. End If
    99. Else
    100. Box = MsgBox("Bitte immer genau EINEN Buchstaben eingeben!", 0, "Fehler!")
    101. End If
    102. TextBox1.Setfocus()
    103. End Sub
    104. End Class




    Mit freundlichen Grüßen
    Pascal

    Ps. Anbei noch die Fehlermeldungen
    Bilder
    • Bildschirmfoto 2013-06-17 um 13.14.37.png

      52,88 kB, 1.482×365, 169 mal angesehen
    For i = 1 To Len(Ratewort)Sollte klar sein. Du musst i auch deklarieren. Oder hab ich da was verpasst? Ich hätte auch nicht Ratew^rter geschrieben. Nehm mal was Vergleichbares ausm Asciizeichensatz. Ist nur ganz evtl. das Problem.
    Also erstmal wäre es schön, wenn du die unnötigen Leerzeilen entfernen würdest. Zu deinen Fehlern: Ich finde, sie sind nicht uneindeutig. Wenn "i" nicht deklariert wurde, dann musst du i deklarieren. Genauso bei allen anderen auch. Ersetzte "Textbox.SetFocus" durch "Textbox.Focus" oder "Textbox.Select".
    Mfg
    Vincent

    @supagopa: Willkommen im Forum. :thumbup:
    Geh mal auf Projekt -> Eigenschaften -> Kompilieren
    und nimm dort folgende Einstellungen vor:
    Option Explicit: On
    Option Strict: On
    Option Infer: On
    und dann im Studio-Menü
    Tools -> Options -> Projects and Solutions -> VB Defaults:
    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!
    Entschuldigung, ich meine natürlich ö.

    Hier sind meine neuen Zuweisungen, funktioniert aber leider trotzdem nicht:

    Dim Ratewörter(19) As String
    Dim Ratewort As String
    Dim Suchwort As String
    Dim Buchstabe As String
    Dim Lebenverloren As Boolean
    Dim Leben As Integer
    Dim max As Integer
    Dim min As Integer
    Dim zufall As Integer
    Dim i As Integer
    Dim j As Integer
    Dim Box As String


    und nachdem ich option strict auf on gesetz habe, hab ich nochmal ein paar fehlermdelungen kassiert
    Bilder
    • Bildschirmfoto 2013-06-17 um 13.41.15.png

      35,61 kB, 1.477×164, 141 mal angesehen
    Und genau diese Fehlermeldungen sind wichtig, da du nicht sagen kannst, dass ein String ein Integer ist und umgedreht. Das muss man Parsen mit Integer.Parse. (war nur nen Beispiel, wie du das in deinen Fällen machst, sagt dir Google). Deswegen habe ich auch gesagt, bei so wenig Programmcode einfach neu schreiben, direkt mit Option Strict On.
    Mfg
    Vincent

    supagopa schrieb:

    hab ich nochmal ein paar fehlermdelungen kassiert
    Sieh Dir jede dieser Variablen an, was sie bedeutet und welcher Typ sinnvoll ist.
    TextBox mit dem Inhalt "Roulade mit Klößen" ist sinnvoll,
    TextBox mit dem Inhalt "17" nicht unbedingt.
    Wenn Du eine TextBox hast und darin steht eine Anzahl (ein numerischer Wert), solltest Du diese TextBox durch ein NumericUpDown ersetzen, da kann man eben nicht "Roulade mit Klößen" reinschreiben, da genügt es, den Value einfach zu casten:

    VB.NET-Quellcode

    1. Dim number = CInt(NumericUpDown1.Value)
    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!
    und keine Umlaute in Codenamen. Macht normal nix, aber siehsteja: Hier hat das Kopieren in den Forum-Post ein bischen gefailt.
    Also gewoehn dich von vornherein an reine Ascii-Notation - dann bleiben dir spaeter Ueberaschungen erspart, weil so harmlos wie hier sind die normalerweise nicht.
    Ich weiß des kommt jetzt bisschen frech, aber ich weiß echt nicht mehr was ich tun soll. Deshalb die Frage an euch: "hätte jemand Lust und Zeit mir schnell ein kleines Hangman zu basteln, am besten dann mit vb 2005. ich brauchs am Mittwoch schon, wäre euch sehr dankbar :)
    also das täte mcih wundern, wenn sich da jemand fände.

    Eher ist zu befürchten, dass jetzt lauter mehr oder weniger sehr unfreundliche Antworten auf dich niederprasseln.
    Weil hier ist man glaub durchgängig der Auffassung (ich eingeschlossen), dasses durchaus von gesamtgesellschaftlichen Nutzen ist, wenn Schüler, die ihre Hausaufgaben nicht machen oder dabei mogeln, dass die dann eine 5 bekommen.
    Weil einige von hier stehen im Berufsleben, und Kollegen, die sich ihre Abschlüsse ermogelt haben, und ansonsten keine Ahnung haben kann man echt nicht brauchen, und dazu sind schlechte Noten ja da, dass solche Kollegen aussortiert werden.


    Also Regenschirm aufziehen und durchhalten!

    :thumbsup:
    Mach den Hangman selbst vorerst mit Bildern. Auch wenn ungern gesehen hier: es geht schnell.

    supagopa schrieb:

    ich brauchs am Mittwoch schon
    Wir lieben Dich.
    Und was machst Du in der Zwischenzeit?
    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!
    Die Präsentation vorbereiten von einem Programm, was er nicht geschrieben hat und wo er nicht durchsteigen kann.