Visual Basic "Highscore" Funktion funktioniert nicht richtig?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Tizu170.

    Visual Basic "Highscore" Funktion funktioniert nicht richtig?

    Hallo,
    Ich hoffe mal, dass ich hier richtig bin...
    Ich habe ein kleines Zahlenratespiel in Visual Basic programmiert. Das Ziel ist die Zahl in so wenig Versuchen wie möglich zu erraten. Ich habe auch ein Label das in einer Textdatei auf dem Computer gespeichert wird. Dieses Label zeigt an, was der "Highscore" an wenigsten Versuchen ist. Nun ist das Problem: Wenn man einen 2 stelligen Rekord hat und einen neuen Rekord im 1 stelligen Bereich aufstellt ändert sich der Highscore nicht. Ist der neue Rekord weiterhin im zweistelligen Bereich, ändert sich der Highscore.

    Hier ist der Code:

    VB.NET-Quellcode

    1. If Val(GuessTextBox.Text) = ZuErrateneNummer.Text Then
    2. If eingegebeneZahl.Text < Highscore.Text Or Highscore.Text = 0 Then
    3. Highscore.Text = eingegebeneZahl.Text()
    4. File.WriteAllText("Highscore.txt", eingegebeneZahl.Text)
    5. End If
    6. End If


    Am Ende, wenn die Zahl erraten wurde, wird sie in ein Label geschrieben. Von dort aus wird geprüft, ob sie kleiner ist als der Highscore oder gleich. Falls ja, wird der Highscore durch die eingegebene Zahl ersetzt und in ein Textdokument geschrieben. Das mit dem schreiben/lesen in das Dokument funktioniert, nur das oben beschriebene Problem tritt auf. Kann mir jemand helfen und erklären was ich falsch gemacht habe? Habe noch nicht so viel Erfahrung in Visual Basic.

    Danke im Vorraus ^^

    Louis
    Willkommen im Forum.

    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden.
    Der Unterschied zwischen And und AndAlso/Or und OrElse

    Das Problem: Du vergleichst aufgrund von Option Strict Off Texte miteinander, keine Zahlen. Und da "12" als Text vor "5" kommt, da das erste Zeichen von "12" eben "1" ist, wird das nix. Wende die o.a. Linkinhalte an und das Problem ist erledigt. Inzwischen schiebe ich das Thema mal an den richtigen Ort.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ebenfalls: Willkommen im Forum. :thumbup:

    Seeloewen schrieb:

    VB.NET-Quellcode

    1. If eingegebeneZahl.Text < Highscore.Text Or Highscore.Text = 0 Then
    Was ganz genau soll Highscore.Text = 0 bedeuten?
    Welchen Datentyp hat Highscore.Text, von welchem Typ ist 0 :?:
    Wenn Du die Kritik von @VaporiZed und dies verstanden hast, kannst Du Dein Problem allein lösen. :D
    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!
    12 = String (also eine Zeichenfolge)
    Highscore = auch ein String
    Strings werden alphabetisch "gerechnet". Also die 12 beginnt mit 1, also das erste, dann kommt 2 ... dann A, dann B ... . Also wenn es mehrere 1en gibt, wird das 2te Zeichen genutzt. Also 1 ist erstmal egal, dann kommt erstmal die 2te Zahl in dem Fall, also die 12. Wenn dein highscore von 6 auf 8 geht, ist alles normal. Aber 12: 12 < 6 oder 8. Richtig. Die 1 ist kleiner als 6, die 2 von der 12 ist derzeit unwichtig für dein Programm. Wenn eine 18 kommt, ist die die 2te "Zahl". Du musst mit Integer-n rechnen. Zahlen. Da wird dann dein System richtig gerechnet.

    Hier hatte ich auch Mal das Problem:
    VB.net - If ... < ... then / If ... > ... then
    Drücke auf Hilfreich, wenn dir dieser Post geholfen hat!
    Mein aktuelles Projekt
    Codar: 19%

    Link: bald

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Tizu170“ ()