Highscoreliste aus txt auslesen?

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Jonebohne.

    Highscoreliste aus txt auslesen?

    Hallo zusammen,

    Ich habe ein Blackjack programmiert, bei welchem die Benutzer ihren Kontostand speichern können. Dies funktioniert auch, indem ich es in eine txt Datei speichere in Format:

    Tim: 5000

    Tino: 9000

    Fabian: 200

    Das Auslesen dieser Werte ist grundsätzlich auch kein Problem. Jedoch möchte ich in einer Top Liste nur die drei höchsten Beträge inklusive Namen anzeigen. Wie könnte ich dies am Einfachsten umsetzen?
    Danke für den Tipp, versuche ich mal so. Ja ist scchon leicht hackbar, ist jedoch nur ein Schulprojekt, bei welchem es nicht besonders wichtig ist, ob die Highscore-Liste echt ist. Würde es eine einfache Lösung geben, das txt File zu verschlüsseln?
    Sieh mal bei MSDN nach.

    EDIT:
    So benutzt man das. Nur werden die Werte andersrum sortiert. Das Dictionary muss also andersrum ausgelesen werden (wie darfst du selber herausfinden :D)

    VB.NET-Quellcode

    1. Dim s As New SortedDictionary(Of Integer, String)
    2. s.Add(90000, "Hans")
    3. s.Add(80000, "Jochen")
    4. Dim en As SortedDictionary(Of Integer, String).Enumerator = s.GetEnumerator()
    5. Dim str As String = ""
    6. Dim i As Integer = 1
    7. Do While en.MoveNext()
    8. ' Etwas mit dem Item machen
    9. str &= i & ". Platz: " & en.Current.Value & " mit " & en.Current.Key & " Punkten" & vbCrLf
    10. i += 1
    11. Loop
    12. MsgBox(str)
    13. End

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

    Hab ich gemacht, doch verstehe es trotzdem noch nicht ganz.

    habe ein SortedDictionary erstellt:

    Dim highscore As New SortedDictionary(Of Integer, String)

    um Werte hinzuzufügen, kann man ja openWith.Add(1000, "Peter") verwenden. Doch wie kann ich nun Die Werte aus dem txt File einfügen?

    Die Daten lade ich so:

    VB.NET-Quellcode

    1. Try
    2. Dim fs As New FileStream(
    3. "gewinne.txt", FileMode.Open)
    4. Dim sr As New StreamReader(fs)
    5. Dim zeile As String
    6. lbl_menu.Text = ""
    7. Do Until sr.Peek() = -1
    8. zeile = sr.readline()
    9. lbl_menu.Text &= zeile & vbCrLf
    10. Loop
    11. sr.Close()
    Also ich würds mit XML machen:

    VB.NET-Quellcode

    1. Imports System.Xml.Serialization
    2. Imports System.IO
    3. Public Class Form1
    4. Private HighScoures As New List(Of Player)
    5. Private Sub Speichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Speichern.Click
    6. Dim fs As New FileStream("Pfad", FileMode.OpenOrCreate)
    7. Dim ser As New XmlSerializer(GetType(List(Of Player)))
    8. ser.Serialize(fs, HighScoures)
    9. End Sub
    10. Private Sub Laden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Laden.Click
    11. Dim fs As New FileStream("Pfad", FileMode.Open)
    12. Dim ser As New XmlSerializer(GetType(List(Of Player)))
    13. Dim players As List(Of Player) = ser.Deserialize(fs)
    14. HighScoures.Clear()
    15. For Each p In players
    16. HighScoures.Add(p)
    17. Next
    18. End Sub
    19. End Class
    20. Class Player
    21. Private _name As String
    22. Private _highscoure As Integer
    23. Public Sub New(ByVal N As String, ByVal HS As Integer)
    24. _name = N
    25. _highscoure = HS
    26. End Sub
    27. Public Sub New()
    28. 'Leer !
    29. End Sub
    30. Public Property Name() As String
    31. Get
    32. Return _name
    33. End Get
    34. Set(ByVal value As String)
    35. _name = value
    36. End Set
    37. End Property
    38. Public Property HighScoure() As Integer
    39. Get
    40. Return _highscoure
    41. End Get
    42. Set(ByVal value As Integer)
    43. _name = value
    44. End Set
    45. End Property
    46. End Class


    Nicht getestet :P