Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

7. Highscore

Uploader:Redakteurnemored
Datum/Zeit:20.10.2011 22:35:12
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.

' *** CODE 7: Highscore

TYPE highscore
  AS INTEGER punkte
  AS STRING spieler
END TYPE
DIM AS highscore highTab(9)

SUB highscoreLesen(highTab() AS highscore)
  DIM zeile AS STRING, such AS INTEGER, dateinr AS INTEGER = FREEFILE
  IF OPEN ("highscore.txt" FOR INPUT AS #dateinr) = 0 THEN
    ' erfolgreich geoeffnet - Daten koennen eingelesen werden
    FOR i AS INTEGER = 0 TO UBOUND(highTab)
      LINE INPUT #dateinr, zeile
      highTab(i).punkte = VALINT(zeile)        ' Punktzahl einlesen
      such = INSTR(zeile, " ")                 ' erstes Leerzeichen suchen
      highTab(i).spieler = MID(zeile, such+1)  ' Name hinter dem Leerzeichen
    NEXT
    CLOSE #dateinr
  END IF
END SUB

SUB highscoreSchreiben(highTab() AS highscore)
  DIM zeile AS STRING, dateinr AS INTEGER = FREEFILE
  IF OPEN ("highscore.txt" FOR OUTPUT AS #dateinr) = 0 THEN
    ' erfolgreich geoeffnet - Daten koennen geschrieben werden
    FOR i AS INTEGER = 0 TO UBOUND(highTab)
      ' Datenzeile schreiben
      PRINT #dateinr, highTab(i).punkte & " " & highTab(i).spieler
    NEXT
    CLOSE #dateinr
  END IF
END SUB

highscoreLesen(highTab())

' Spielablauf - neuen Spielstand ermitteln
DIM neuePunktzahl AS INTEGER = 745, neuerSpielername AS STRING = "neu"

' neuen Spielstand einreihen
DIM AS INTEGER ub = UBOUND(highTab)
IF highTab(ub).punkte < neuePunktzahl THEN      ' neuer Eintrag erforderlich
  FOR i AS INTEGER = ub-1 TO 0 STEP -1
    IF highTab(i).punkte < neuePunktzahl THEN
      highTab(i+1) = highTab(i)                 ' Eintrag nach unten schieben
    ELSE
      highTab(i+1).punkte = neuePunktzahl       ' neuen Eintrag schreiben
      highTab(i+1).spieler = neuerSpielername
      EXIT FOR
    END IF
  NEXT
END IF

highscoreSchreiben(highTab())