![]() |
Re: Highscore
@ alexander
klar lernt man daraus, aber nur wenn man es auch versteht und man nach einer weile erfolge verbuchen kann. Wenn man jedoch stundenlang vor dem monitor sitzt, sich seitenweise die online- hilfe durchliest und am ende immernoch nichts dabei rauskommt ist das schon ein bisschen demmotivierend, oder etwa nicht?? ok dank eurer hilfe funktioniert das sortieren jetzt ganz gut (vor allem dank kiar) jetzt stellt sich jedoch noch die frage wie ich das realisiere nicht auf die einzelnen Columns zu klicken, sondern per Button die Column sortiert werden... einfache anweisungen á la " Button1.Click " funktionieren (natürlich) nicht (wär ja auch zu schön gewesen) :twisted: |
Re: Highscore
In der OnClick Prozedure des Buttons schreibst du einfach
Delphi-Quellcode:
ColumnToSort := 1;
ListView1.AlphaSort; |
Re: Highscore
oki thx Tpercon
jetzt vertehe ich bloß nicht so ganz wie ich die einzelnen "Subitems" direkt ansprechen kann. schließlich muss ich die niedrigste punktzahl der Highscore mit der vom spieler erreichten Punktzahl vergleichen.. Ich würde das gern mit ner " If ... then... else..." - Anweisung machen, hab schon ales mögliche ohne erfolg versucht bye greg |
Re: Highscore
Es geht ja jetzt nur um die Anzeige im ListView, oder?
Du fügst deine Werte einfach mittels Add... in die ListView ein. Anschließend sagst du ihm halt mittels ColumnToSort welche Spalte er sortieren soll und dann sortierst du das ganze mittels AlphaSort. Da du ja Integer und keine Strings vergleichen möchtest, mußt du die entsprechende Sort Methode für die Spalte noch anpassen:
Delphi-Quellcode:
Das müßte dir jetzt gut weiterhelfen, ansonsten frag einfach.
case ColumnToSortLV1 of
0: Compare := CompareText(Item1.Caption,Item2.Caption); 1: begin //bzw. die Spalte die die Integer enthält ix := ColumnToSortLV1 - 1; if CompareText(Item1.SubItems[ix],Item2.SubItems[ix]) = 0 then Compare := 0 else if StrtoInt(Item1.SubItems[ix]) > StrtoInt(Item2.SubItems[ix]) then Compare := 1 else Compare := -1; end; else begin ix := ColumnToSortLV1 - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end; |
Re: Highscore
thx for answer aber ich mein was anderes, Das Sortieren der einträge funktioniert jetzt ganz gut.
ok, ich beschreib mein prob mal ausfürlicher: Also die SupItems (das sind die Punkte die der entsprechende spieler erreicht hat) werden von der größten zahl (ganz oben auf der ListView) bis zur kleinsten (ganz unten auf der ListView) sortiert, das funktioniert auch. Da ich aber nur eine bestimmte anzahl an namen und Punkten in der HighScore stehen haben will muss halt verglichen werden ob die Punktzahl, die der spieler erreicht hat (werden in einem Label ausgegeben) höher ist als die niedrigste Punktzahl auf der Highscore. wenn ja, dann soll diese höhere punktzahl auf die Highscore gesetzt werden und dementsprechned die niedrigste gelöscht werden (das löschen ist kein problem) so ich hoffe jetzt ist meine frage deutlicher cu greg |
Re: Highscore
Probier das mal so:
Delphi-Quellcode:
Erklärung:
if (Label1.Caption > ListView1.Items[ListView1.Items.Count -1].SubItems.Text)
then ShowMEssage('Du bist auf der HighScore!!'); Es wird das überprüft, ob die Zahl in dem Label größer ist als die letzte Zahl im ersten SubItem. Nachtrag: Habe es nicht getestet. |
Re: Highscore
Füge den Wert einfach in die ListView hinzu, sortiere das und lösche einfach den/ die unteren Einträge!
Delphi-Quellcode:
Eine andere Möglichkeit wäre (Voraussetzung: ddie Liste ist wirklich sortiert!) das du einfach schaust, wie groß der letzte Wert ist und wenn die neue Punnktezahl größer ist, dann fügst du den in die ListView und löscht den letzten.
while ListView1.Items.Count > 10 do begin
ListView1.Items.Delete(ListView1.items.Count - 1); end; |
Re: Highscore
super danke alex genauso funktioniert es. so ähnlich hab ich es auch versucht...
@ tpercon hab's bisjetzt auf eine ähnliche weise gemacht aber vielleicht änder ich's auch noch auf deinen Vorschlag um also vielen dank für die hilfe dank euch funhtioniert mein 'Highscoretestprogramm' jetzt (fast) einwandfrei, jetzt muss ich's nur noch in das richtige spiel einbauen...(mal sehen was na wieder für probleme auftauchen..) die nächste frage wäre, wie ich die Highscore in eine Datei speicher, aber das versuch ich erstmal selber :lol: |
Re: Highscore
Als Tip: Inis wären dafür Ideal. So ähnlich aufgebaut (links der Name, rechts die Punkte...):
Code:
[highscore]
name1=500 name2=400 |
Re: Highscore
Und beim Einlesen schön überprüfen, ob der Schlüssel z.B. name3 bzw. die Section auch wirklich existiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz