Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie macht man am besten Highscore-Einträge? (https://www.delphipraxis.net/41176-wie-macht-man-am-besten-highscore-eintraege.html)

malo 27. Feb 2005 15:09


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:
  • Es dürfen maximal 10 Einträge gemacht werden
  • Die Highscores sollten nach Punkten geordnet sein (der erste ganz oben, der schlechteste ganz unten)
  • Es müssen von jedem Benutzer Name, Punktzahl und Rang jederzeit aufrufbar sein

Kann mir da vielleicht jemand ein paar Denkanstöße geben? Weil ich grad nicht wirklich weiß, wie ich das im Einzelnen umsetzen soll... :?

Flogo 27. Feb 2005 15:57

Re: Wie macht man am besten Highscore-Einträge?
 
Ich würde dir empfehlen die Ini mit den Scores so anzulegen
Code:
[Platz1]
Name=Hanspeter
Punkte=10000000
[Platz2]
Name=DerEwigZweite
Punkte=100000
[...]
und komplett ins Programm einzulesen. Im Programm könntest du dir zB ein Array aus Records anlegen und darin die Daten speichern

Delphi-Quellcode:
type
  THighscorePlatz = record
    Name: string;
    Punkte: Integer;
  end;

  THighscore = array[1..10] of THighscorePlatz

malo 27. Feb 2005 16:03

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?

Catbytes 27. Feb 2005 16:16

Re: Wie macht man am besten Highscore-Einträge?
 
Hallo,

schau mal hier

1. Eintrag...

hummer 27. Feb 2005 16:19

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.

malo 27. Feb 2005 16:19

Re: Wie macht man am besten Highscore-Einträge?
 
Zitat:

Zitat von Catbytes
Hallo,

schau mal hier

1. Eintrag...

:oops: Manchmal übersieht man echt die einfachsten Dinge :mrgreen:

Trotzdem danke, ich schaus mir mal an :)

Flogo 27. Feb 2005 16:29

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:
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;
Save und Load musst du dann beim Starten des Programms bzw. beim Beenden ausführen.
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:
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;
So oder so ähnlich.
Mein Vater hat grad den Fernseher angemacht und ich kann nicht dafür garantieren dass sich nicht doch noch ein Logikfehler eingeschlichen hat...

Binärbaum 27. Feb 2005 21:03

Re: Wie macht man am besten Highscore-Einträge?
 
Zitat:

Zitat von Flogo
Ich würde dir empfehlen die Ini mit den Scores so anzulegen
Code:
[Platz1]
Name=Hanspeter
Punkte=10000000
[Platz2]
Name=DerEwigZweite
Punkte=100000
[...]

Das wäre so zwar prinzipiell möglich, aber Ini-Dateien haben den Nachteil, dass sie relativ leicht durch den Benutzer manipuliert werden können, wenn diese in einem einfachen Texteditor geladen werden. Deshalb würde ich hier eher typisierte Dateien bevorzugen.

MfG
Binärbaum

Hador 27. Feb 2005 21:32

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/

sniper_w 27. Feb 2005 21:34

Re: Wie macht man am besten Highscore-Einträge?
 
So habe ich das gemacht : :)

http://www.delphipraxis.net/internal...=327477#327477


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.
Seite 1 von 2  1 2      

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