Spielerranking
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: Spielerranking |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi leute ich habe da ein problem ein Spielerranking zu Programmieren.
Code: [AUSKLAPPEN] Global Player:TPlayer
Type TPlayer Global List:TList=New TList Field Name$ Field Punkte% Function ADD(Name$,Punkte%) Player:TPlayer=New TPlayer Player.name=name Player.punkte=punkte List.Addlast Player End Function End Type wie kann ich im nachhinein die liste durchblättern und nach dem höchsten punktstand sortieren? also irgendwie steh ich voll auf dem schlauch... mein ansatz... Code: [AUSKLAPPEN] for P:Tplayer=eachin tplayer.list
for P1:Tplayer=eachin tplayer.list if p1.name=p.name then else if p.punkte>p1.punkte then aber das problem ist ja dann auch ... naja wie sortiere ich richtig? danke im vorraus |
||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bau in deine Klasse TPlayer eine Methode "Compare:Int(P:TPlayer)" ein, bei der du die Punkte vergleichst und je nachdem 1 oder 0 zurückgibst.
TList.sort() sortiert dann nach deinen Kriterien. |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie verwende ich genau TList.Sort()
also wie beziehe ich es auf die punkte?= |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Sort Methode verwendet die Compare Methode der Objekte. Wenn du sie wie BlitzMoritz schrieb, implementierst, wird die liste automatisch richtig sortiert. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Habe dir ein Codebeispiel geschrieben. BlitzMax: [AUSKLAPPEN] SuperStrict Es ist mMn sauberer, eine eigene Funktion für das Vergleichen zu schreiben, ohne Compare zu überschreiben (Ich habe in meinem Code spaßeshalber beides implementiert). Mit einer Extrafunktion kannst du später auch nach verschiedenen Aspekten sortieren. Wenn du Compare überschreiben solltest, musst du darauf achten, dass du 0 zurückgeben musst, wenn sich die beiden verglichenen Objekte gleichen, sonst kommt es zu Fehlern bei z.B. List.Contains(). Mit freundlichen Grüßen, Tennisball |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
also wäre es demnach so?
Code: [AUSKLAPPEN] Global Player:TPlayer
Type TPlayer Global List:TList=New TList Field Name$ Field Punkte% Function ADD(Name$,Punkte%) Player:TPlayer=New TPlayer Player.name=name Player.punkte=punkte List.Addlast Player End Function Method Compare:Int(P:TPlayer) For P1:tplayer=EachIn list If p.punkte> p1.punkte Then Return 1 Next Return 0 End Method End Type For p:tplayer=EachIn tplayer.list tplayer.list.sort(compare(p)) Next edit : zu späd gesehen--- danke |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mathias, du hast noch einen Fehler in der Compare: du vergleichst das einkommende Objekt mit jedem Objekt in der Liste. Alles was du brauchst, ist es mit dem aktuellen Objekt, also Self zu vergleichen. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group