Wie macht man am besten Highscore-Einträge?
Hi!
Und zwar möchte ich für ein Programm eine Highscoreliste einbauen. Nur jetzt die Frage: Wie setz ich das am besten um? Wie man einzelne Einträge macht, weiß ich schon (inis). Allerdings sollen folgende Kriterien erfüllt werden können:
Kann mir da vielleicht jemand ein paar Denkanstöße geben? Weil ich grad nicht wirklich weiß, wie ich das im Einzelnen umsetzen soll... :? |
Re: Wie macht man am besten Highscore-Einträge?
Ich würde dir empfehlen die Ini mit den Scores so anzulegen
Code:
und komplett ins Programm einzulesen. Im Programm könntest du dir zB ein Array aus Records anlegen und darin die Daten speichern
[Platz1]
Name=Hanspeter Punkte=10000000 [Platz2] Name=DerEwigZweite Punkte=100000 [...]
Delphi-Quellcode:
type
THighscorePlatz = record Name: string; Punkte: Integer; end; THighscore = array[1..10] of THighscorePlatz |
Re: Wie macht man am besten Highscore-Einträge?
Danke schonmal :)
Nur wie kann ich die Plätze auch "tauschen" lassen. Also wenn jemand jetzt auf den zweiten Platz kommt, muss der zweite und alles, was drunter ist, einen Platz aufrücken. Muss ich dann die neue Punktzahl mit allen anderen einzeln Vergleichen und alles neu rausschreiben? |
Re: Wie macht man am besten Highscore-Einträge?
|
Re: Wie macht man am besten Highscore-Einträge?
Du prüfst nach jedem Spiel ob die erzielte Punktzahl größer ist als das letzte Element in der Highscore. Ist dies der Fall übershcreibst du das Element mit dem neuen Wert. Dann kannst du das Array über ein Sortierverfahren neu sortieren lassen und wieder ausgeben oder in eine INI Datei speichern.
|
Re: Wie macht man am besten Highscore-Einträge?
Zitat:
Trotzdem danke, ich schaus mir mal an :) |
Re: Wie macht man am besten Highscore-Einträge?
Ich weiß nicht ob das nicht übertrieben wäre, aber du könntest THighscores auch zur Klasse machen
Delphi-Quellcode:
Save und Load musst du dann beim Starten des Programms bzw. beim Beenden ausführen.
type
THighscores = class(TObject) public Items: array [1..10] of THighscorePlatz procedure LoadFromFile(FileName: string); procedure SaveToFile(FileName: string); function HighscorePlatzErreicht(Name: string; Punkte: Integer): Integer; end; In der Funktion HighscorePlatzErreicht könntest du prüfen ob und an welchen Platz ein neuer Spielstand in die Highscore gehört. Wenn er reinkommt verschiebst du die Einträge im Array um einen Platz nach hinten und schreibst den übergebenen Record an die entsprechende Stelle.
Delphi-Quellcode:
So oder so ähnlich.
function THighscores.HighscorePlatzErreicht(Name: string; Punkte: Integer): Integer;
var i, j: Integer; fertig: Boolean; begin fertig := false; i := High(Items); while i >= Low(Items) and not fertig do begin if Items[i].Punkte > Punkte then begin for j := i+1 to Low(Items) -1 do Items[j+1] := Items[j]; Items[i+1].Punkte := Punkte; Items[i+1].Name := Name; fertig := true; end; Dec(i); end; end; Mein Vater hat grad den Fernseher angemacht und ich kann nicht dafür garantieren dass sich nicht doch noch ein Logikfehler eingeschlichen hat... |
Re: Wie macht man am besten Highscore-Einträge?
Zitat:
MfG Binärbaum |
Re: Wie macht man am besten Highscore-Einträge?
Jupp würde dir auch Typisierte Dateien empfehlen.
Du kannst natürlich auch versuchen die Ini's zu verschlüsseln. Hier ein Tut zu Typ. Dateien: http://www.dsdt.info/tutorials/typdateien/ |
Re: Wie macht man am besten Highscore-Einträge?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz