struct? array? Ich bin mir nicht sicher, bitte um hilfe. [ge
struct? array? Ich bin mir nicht sicher, bitte um hilfe. [ge
Hallo,
folgende Ausgangssituation:
Ich arbeite an einem kleinen Programm welche zB auch die Strafzeiten (Penalties wie beim Eishockey) beinhaltet, dh. es wird die Spielernummer und die
Restlaufzeit der Strafe getrackt.
Damit auch auf einer externen Anzeigetafel immer die niedrigste Strafzeit ganz oben steht, muss die "table" für die Strafzeiten nach der Restlaufzeit der Strafe sortiert sein und gleichzeit eine direkte Verbindung zum Spieler, also der Spielernummer haben. Natürlich können auch mehrere Spieler gleichzeit mit unterschiedlicher Strafdauer eine Strafe bekommen, daher ist die Sortierung notwendig.
Ich habe da schon einiges getestet, aber leider noch nicht "gelbe vom Ei" gefunden.
zB habe ich mittels "struct" eine Verbindung zwischen Spielernummer und Strafzeit definiert, und diese dann in array "geschoben". Aber das Sortieren, da scheitere ich.
Oder gibt es bessere Ansätze?
Bin dankbar für jeden Hinweis.
Grüsse Alex
folgende Ausgangssituation:
Ich arbeite an einem kleinen Programm welche zB auch die Strafzeiten (Penalties wie beim Eishockey) beinhaltet, dh. es wird die Spielernummer und die
Restlaufzeit der Strafe getrackt.
Damit auch auf einer externen Anzeigetafel immer die niedrigste Strafzeit ganz oben steht, muss die "table" für die Strafzeiten nach der Restlaufzeit der Strafe sortiert sein und gleichzeit eine direkte Verbindung zum Spieler, also der Spielernummer haben. Natürlich können auch mehrere Spieler gleichzeit mit unterschiedlicher Strafdauer eine Strafe bekommen, daher ist die Sortierung notwendig.
Ich habe da schon einiges getestet, aber leider noch nicht "gelbe vom Ei" gefunden.
zB habe ich mittels "struct" eine Verbindung zwischen Spielernummer und Strafzeit definiert, und diese dann in array "geschoben". Aber das Sortieren, da scheitere ich.
Oder gibt es bessere Ansätze?
Bin dankbar für jeden Hinweis.
Grüsse Alex
Zuletzt geändert von thc2_67 am 12. August 2012 14:23, insgesamt 1-mal geändert.
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
Eine Möglichkeit wäre ein struct und eine QList und dieser Teil der Doku:
http://doc.qt.nokia.com/latest/qtalgori ... ml#qSort-2
http://doc.qt.nokia.com/latest/qtalgori ... ml#qSort-2
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
OK, danke für die schnelle Antwort ich werds einmal testen.
Mein struct sieht ungefähr so aus:
struct { unsigned long penalty_time; int penalty_nr; };
Nun habe ich noch eine Frage: da sich die "penalty_time" laufend ändert (da werden mittels *timer aktualisert) muss ich alle Sekunden den Wert von "penalty_time"
aktualiseren und somit wird alle Sekunden auf die QList zugegriffen.
Aus Eurer Erfahrung heraus ist es besser diese Aktualierung mittels Iterator zu machen oder mittels "for each"? Oder doch anders?
Danke nochmals.
Grüsse
Mein struct sieht ungefähr so aus:
struct { unsigned long penalty_time; int penalty_nr; };
Nun habe ich noch eine Frage: da sich die "penalty_time" laufend ändert (da werden mittels *timer aktualisert) muss ich alle Sekunden den Wert von "penalty_time"
aktualiseren und somit wird alle Sekunden auf die QList zugegriffen.
Aus Eurer Erfahrung heraus ist es besser diese Aktualierung mittels Iterator zu machen oder mittels "for each"? Oder doch anders?
Danke nochmals.
Grüsse
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
Nichts von Beiden
Aktualisierung der Anzeige ist Sache der Anzeige. Ich würde in dem struct den Spieler, die gesamte Strafzeitlänge (die kann doch sicher variieren, einer bekommt 5, der andere 3 Minuten) und den Beginn der Strafe ablegen. Aus Beginn und Länge lässt sich leicht die Restzeit errechnen. Per Timer wird die Anzeige aktualisiert, wenn die Reststrafzeit 0 wird, erfolgt keine Anzeige. Hier wird eine temporäre Liste erzeugt (mit Kopien der structs der Gesamtliste), die dann auch nach Restlaufzeit sortiert wird und danach angezeigt.
Ein weiterer Vorteil: Wenn die Daten in dem struct nicht verändert werden, kann man sie nach dem Spiel für eine statistische Auswertung heranziehen. Auch kann ein Spieler mit der höchsten Gesamtstrafzeit zum BadBoy des Spiels gewählt werden usw.
Aktualisierung der Anzeige ist Sache der Anzeige. Ich würde in dem struct den Spieler, die gesamte Strafzeitlänge (die kann doch sicher variieren, einer bekommt 5, der andere 3 Minuten) und den Beginn der Strafe ablegen. Aus Beginn und Länge lässt sich leicht die Restzeit errechnen. Per Timer wird die Anzeige aktualisiert, wenn die Reststrafzeit 0 wird, erfolgt keine Anzeige. Hier wird eine temporäre Liste erzeugt (mit Kopien der structs der Gesamtliste), die dann auch nach Restlaufzeit sortiert wird und danach angezeigt.
Ein weiterer Vorteil: Wenn die Daten in dem struct nicht verändert werden, kann man sie nach dem Spiel für eine statistische Auswertung heranziehen. Auch kann ein Spieler mit der höchsten Gesamtstrafzeit zum BadBoy des Spiels gewählt werden usw.
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
Danke erstmal für den Input.
Die Idee mit den Statistiken ist gut. Ich habs zurzeit so gelöst, dass diese Daten (auch aus Gründen zur externen Verarbeitung) dann in einem LogFile landen und unveränderbar auf der HDD gespeichert werden (dass funkt auch schon).
Momentan hab ich einen Knopf drinnen.
Wo ich momentan nicht weiterkomme, ist die Sache, dass die Strafen immer in Verbindung mit dem Spieler stehen, daher kann ich auch keine einfache QList verwenden, deshalb dachte ich auch an ein struct, welches dann in der QList abgelegt werden.
Oder kann QList auch folgende Inhalte korrekt sortieren: "120000_67" -> 120000=Dauer der Strafe (oder Restlaufzeit), 67=Speilernummer. Sortierung soll nach Dauer der Strafe (Restlaufzeit) werden. Dh. in der QList sollte dann die sortierte Reihenfolge so aussehen:
1. Eintrag: 1000_67
2. Eintrag: 12000_12
Die Idee mit den Statistiken ist gut. Ich habs zurzeit so gelöst, dass diese Daten (auch aus Gründen zur externen Verarbeitung) dann in einem LogFile landen und unveränderbar auf der HDD gespeichert werden (dass funkt auch schon).
Momentan hab ich einen Knopf drinnen.
Wo ich momentan nicht weiterkomme, ist die Sache, dass die Strafen immer in Verbindung mit dem Spieler stehen, daher kann ich auch keine einfache QList verwenden, deshalb dachte ich auch an ein struct, welches dann in der QList abgelegt werden.
Oder kann QList auch folgende Inhalte korrekt sortieren: "120000_67" -> 120000=Dauer der Strafe (oder Restlaufzeit), 67=Speilernummer. Sortierung soll nach Dauer der Strafe (Restlaufzeit) werden. Dh. in der QList sollte dann die sortierte Reihenfolge so aussehen:
1. Eintrag: 1000_67
2. Eintrag: 12000_12
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
Das ginge nur über einen String - ist aber Mist! Pack es doch in einen struct PenaltyInfo (o.Ä.) (Spielernummer, Strafzeit, Strafbeginn), und biete einen passenden operator< an, damit du die QList<PenaltyInfo> sortieren kannst. Alles andere wären nur Hacks, die irgendwann nur noch Probleme bereiten.
Wg. Operatorüberladung schau in dein Buch oder gleich hier
Wg. Operatorüberladung schau in dein Buch oder gleich hier
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
OK, aber jetzt habe ich noch eine andere Frage:
wie kann ich dann auf die "struct"-elemente in der QList zugreifen? Mit .value(struct.mitglied) bekomm ichs leider nicht hin.
Danke nochmals für die Hilfe für einen Neuling.
Grüsse
wie kann ich dann auf die "struct"-elemente in der QList zugreifen? Mit .value(struct.mitglied) bekomm ichs leider nicht hin.
Danke nochmals für die Hilfe für einen Neuling.
Grüsse
-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
Re: struct? array? Ich bin mir nicht sicher, bitte um hilfe.
wie?thc2_67 hat geschrieben:GELÖST!!