Skript(e) zum erstellen/lesen von Higscores

  • Hallo @all,
    ich hab mal zwei skript gebastelt:
    Diese können:

    • Highscores in eine Datei schreiben
    • Alte Higscores aus einer Datei lesen und anzeigen


    Ich habe mir das so vorgestellt das die Higscores-Datei folgendrmasen aussieht:

    Spoiler anzeigen

    1.Punktestand
    1.Name
    2.Punktestand
    2.Name
    ...

    Hier die Skripte:

    1.Skript
    [autoit]

    #include <File.au3>
    $HGD = ;Text-Datei mit den Highscores

    [/autoit] [autoit][/autoit] [autoit]

    ;$PN = Neuer Punktestand

    [/autoit] [autoit][/autoit] [autoit]

    ;Einlesen der alten Highscores
    $PA_1 = FileReadLine($HGD, 1)
    $NA_1 = FileReadLine($HGD, 2)
    $PA_2 = FileReadLine($HGD, 3)
    $NA_2 = FileReadLine($HGD, 4)
    $PA_3 = FileReadLine($HGD, 5)
    $NA_3 = FileReadLine($HGD, 6)
    $PA_4 = FileReadLine($HGD, 7)
    $NA_4 = FileReadLine($HGD, 8)
    $PA_5 = FileReadLine($HGD, 9)
    $NA_5 = FileReadLine($HGD, 10)
    $PA_6 = FileReadLine($HGD, 11)
    $NA_6 = FileReadLine($HGD, 12)
    $PA_7 = FileReadLine($HGD, 13)
    $NA_7 = FileReadLine($HGD, 14)
    $PA_8 = FileReadLine($HGD, 15)
    $NA_8 = FileReadLine($HGD, 16)
    $PA_9 = FileReadLine($HGD, 17)
    $NA_9 = FileReadLine($HGD, 18)
    $PA_10 = FileReadLine($HGD, 19)
    $NA_10 = FileReadLine($HGD, 20)

    [/autoit] [autoit][/autoit] [autoit]

    ;Vergleichen und Schreiben
    If $PN > $PA_1 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 1")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 1, $PN, 1)
    _FileWriteToLine($HGD, 2, $NAME, 1)
    _FileWriteToLine($HGD, 3, $PA_1, 1)
    _FileWriteToLine($HGD, 4, $NA_1, 1)
    _FileWriteToLine($HGD, 5, $PA_2, 1)
    _FileWriteToLine($HGD, 6, $NA_2, 1)
    _FileWriteToLine($HGD, 7, $PA_3, 1)
    _FileWriteToLine($HGD, 8, $NA_3, 1)
    _FileWriteToLine($HGD, 9, $PA_4, 1)
    _FileWriteToLine($HGD, 10, $NA_4, 1)
    _FileWriteToLine($HGD, 11, $PA_5, 1)
    _FileWriteToLine($HGD, 12, $NA_5, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_2 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 2")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 3, $PN, 1)
    _FileWriteToLine($HGD, 4, $NAME, 1)
    _FileWriteToLine($HGD, 5, $PA_2, 1)
    _FileWriteToLine($HGD, 6, $NA_2, 1)
    _FileWriteToLine($HGD, 7, $PA_3, 1)
    _FileWriteToLine($HGD, 8, $NA_3, 1)
    _FileWriteToLine($HGD, 9, $PA_4, 1)
    _FileWriteToLine($HGD, 10, $NA_4, 1)
    _FileWriteToLine($HGD, 11, $PA_5, 1)
    _FileWriteToLine($HGD, 12, $NA_5, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_3 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 3")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 5, $PN, 1)
    _FileWriteToLine($HGD, 6, $NAME, 1)
    _FileWriteToLine($HGD, 7, $PA_3, 1)
    _FileWriteToLine($HGD, 8, $NA_3, 1)
    _FileWriteToLine($HGD, 9, $PA_4, 1)
    _FileWriteToLine($HGD, 10, $NA_4, 1)
    _FileWriteToLine($HGD, 11, $PA_5, 1)
    _FileWriteToLine($HGD, 12, $NA_5, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)
    ElseIf $PN > $PA_4 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 4")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 7, $PN, 1)
    _FileWriteToLine($HGD, 8, $NAME, 1)
    _FileWriteToLine($HGD, 9, $PA_4, 1)
    _FileWriteToLine($HGD, 10, $NA_4, 1)
    _FileWriteToLine($HGD, 11, $PA_5, 1)
    _FileWriteToLine($HGD, 12, $NA_5, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)
    ElseIf $PN > $PA_5 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 5")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 9, $PN, 1)
    _FileWriteToLine($HGD, 10, $NAME, 1)
    _FileWriteToLine($HGD, 11, $PA_5, 1)
    _FileWriteToLine($HGD, 12, $NA_5, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_6 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 6")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 11, $PN, 1)
    _FileWriteToLine($HGD, 12, $NAME, 1)
    _FileWriteToLine($HGD, 13, $PA_6, 1)
    _FileWriteToLine($HGD, 14, $NA_6, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_7 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 7")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 13, $PN, 1)
    _FileWriteToLine($HGD, 14, $NAME, 1)
    _FileWriteToLine($HGD, 15, $PA_7, 1)
    _FileWriteToLine($HGD, 16, $NA_7, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_8 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 8")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 15, $PN, 1)
    _FileWriteToLine($HGD, 16, $NAME, 1)
    _FileWriteToLine($HGD, 17, $PA_8, 1)
    _FileWriteToLine($HGD, 18, $NA_8, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $PN > $PA_9 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 9")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 17, $PN, 1)
    _FileWriteToLine($HGD, 18, $NAME, 1)
    _FileWriteToLine($HGD, 19, $PA_9, 1)
    _FileWriteToLine($HGD, 20, $NA_9, 1)
    ElseIf $PN > $PA_10 Then
    MsgBox(0, "Neuer Highscore!", "Du hast einen neuen Highscore!!!" & @CRLF & @CRLF & "Neue Postion: 10")
    $NAME = InputBox("Highscores", "Bitte geben sie ihren Namen ein.")
    _FileWriteToLine($HGD, 19, $PN, 1)
    _FileWriteToLine($HGD, 20, $NAME, 1)
    Else
    $PF = $PA_10 - $PN + 1
    MsgBox(0, "Highscores", "Schade, leider kein neuer Highscore." & @CRLF & @CRLF & "Dir fehlen für einen neuen Highscore noch " & $PF & " Punkt(e).")
    EndIf

    [/autoit]
    2.Skript
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $HGD = ;Text-Datei mit den Highscores

    [/autoit] [autoit][/autoit] [autoit]

    $PA_1 = FileReadLine($HGD, 1)
    $NA_1 = FileReadLine($HGD, 2)
    $PA_2 = FileReadLine($HGD, 3)
    $NA_2 = FileReadLine($HGD, 4)
    $PA_3 = FileReadLine($HGD, 5)
    $NA_3 = FileReadLine($HGD, 6)
    $PA_4 = FileReadLine($HGD, 7)
    $NA_4 = FileReadLine($HGD, 8)
    $PA_5 = FileReadLine($HGD, 9)
    $NA_5 = FileReadLine($HGD, 10)
    $PA_6 = FileReadLine($HGD, 11)
    $NA_6 = FileReadLine($HGD, 12)
    $PA_7 = FileReadLine($HGD, 13)
    $NA_7 = FileReadLine($HGD, 14)
    $PA_8 = FileReadLine($HGD, 15)
    $NA_8 = FileReadLine($HGD, 16)
    $PA_9 = FileReadLine($HGD, 17)
    $NA_9 = FileReadLine($HGD, 18)
    $PA_10 = FileReadLine($HGD, 19)
    $NA_10 = FileReadLine($HGD, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Highscores", 170, 240, 100, 200, -1, $WS_EX_ACCEPTFILES)
    $listview = GUICtrlCreateListView("Name |Punkte ", 10, 10, 150, 220)
    GUICtrlCreateListViewItem($NA_1 & "|" & $PA_1, $listview)
    GUICtrlCreateListViewItem($NA_2 & "|" & $PA_2, $listview)
    GUICtrlCreateListViewItem($NA_3 & "|" & $PA_3, $listview)
    GUICtrlCreateListViewItem($NA_4 & "|" & $PA_4, $listview)
    GUICtrlCreateListViewItem($NA_5 & "|" & $PA_5, $listview)
    GUICtrlCreateListViewItem($NA_6 & "|" & $PA_6, $listview)
    GUICtrlCreateListViewItem($NA_7 & "|" & $PA_7, $listview)
    GUICtrlCreateListViewItem($NA_8 & "|" & $PA_8, $listview)
    GUICtrlCreateListViewItem($NA_9 & "|" & $PA_9, $listview)
    GUICtrlCreateListViewItem($NA_10 & "|" & $PA_10, $listview)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While WinExists("Highscores")
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Verbesserungsvorschläge sind (solange sie nicht vorschlagen case anstatt If/ElIfseIf/EndIf zu verwenden) gerne gesehen.
    Lob natürlich auch.  ;)

  • Das geht mit schleifen und dem Befehl Eval 10 mal kürzer.

    Sonst aber ganz gut

    mfg Ubuntu

  • Schau dir mal for und next an das würde dir oft einige schreibarbeit ersparen
    ansonsten Schön