Seite 1 von 1

Highscore

Verfasst: 23. Mai 2010 11:41
von Mr.Burns
Hallo zusammen,
bin gerade dabei nen Highscore zu bauen.
Das klappt alles auch wunderbar bis zur Highscore-Punktzahl 9.
Danach wird für die Zehner-Reihe nur die 1 geschrieben, für die Zweier-Reihe nur die 2 usw...

Hier mal der Code zum Highscore:

Code: Alles auswählen

highscore::highscore (QWidget * w ): QLabel(w) {
   this->setText("Highscore: 0");
}

void spiel::timerEvent(QTimerEvent * event){
          i++;
          str.setNum(i);
          h->setText("Highscore: " + str);
}

spiel::spiel (QWidget * w = 0):QLabel(w){
h = new highscore(this);
i = 0;
h->show();
}
Danke im vorraus

Verfasst: 23. Mai 2010 12:00
von franzf
Macht deine Hicghscore-Klasse noch was anderes als nur Text anzeigen? Ich denke nämlich, hier ist ableiten nicht notwendig.

Zum Problem kann man wenig sagen. Ich nehme einfach mal an, dass das QLabel nicht breit genug ist, und deshalb der Text hinten raus abgeschnitten wird :P
Und du solltest dir jetzt langsam echt mal die Layoutklassen anschauen. Dein Label liegt einfach nur im Bereich des "spiel"-Widgets. Wenn da ein zweites dazukommt, musst du immer selber die Position/Größe anpassen, was unnötig (QLayout + Konsorten) und Fehleranfällig ist.

Verfasst: 23. Mai 2010 12:17
von Mr.Burns
Danke für die schnelle Antwort...
Wurde auch schon zum Teil erfolgreich umgesetzt;)

Noch ne andere Frage bezgl. des highscores:
Ich hab mir ein Menü gebaut,dass,falls ich das Spiel verlieren sollte, aufgerufen wird und ich somit ein neues Spiel direkt starten kann...
Das funzt auch ohne Probs...nur der Highscore ist der selbe wie am ende des letzten Spiels...wie kann man also diesen wieder auf 0 setzen?

Verfasst: 23. Mai 2010 12:27
von franzf
Mr.Burns hat geschrieben:nur der Highscore ist der selbe wie am ende des letzten Spiels...wie kann man also diesen wieder auf 0 setzen?
Indem du es wieder auf 0 setzt?!? DU hast die Kontrolle über deine Objekte, d.h. DU kannst (bei entsprechendem Design) auch diese ändern.
Ich denke du hast ein MainWindow, in dem das Menu und das Spielbrett angezeigt werden. Wenn also dein Menu ein "newGameRequest" sendet, hast du in deinem MainMenu einen SLOT, in dem du einfach dein Spiel neu startest und den Highscore auf 0 setzt.
BTW: Ein Highscore ist nicht das selbe wie ein aktueller Punktestand. Einen Highscore speichert man, und wenn dein aktuelles Spiel besser war wird der Highscore durch den neuen ersetzt.