Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.01.2016, 23:09

Spielerweiterung: Punkte pro Zeit

Hallo, nachdem das Spiel nun funktioniert und ich es ein bisschen erweitert habe wollte ich nun einen Score einbetten.
Dieser soll zum einen erhöht werden wenn ein Asteroid zerstört wird (das funktioniert problemlos) zum anderen soll jede 10te Sekunde der Punktestand erhöht werden.

Bisslang bin ich noch nicht zu einer geeigneten Lösung gekommen. Was ich zurzeit stehen habe:

if (((int)g_pTimer->GetCurent()) % 10 == 0)Points += 10;

GetCurent gibt die bislang vergangene Zeit in Sekunden wieder.
Funktioniert natürlich nicht, da solange die momentane Zeit zwischen 10 und 11 Sekunden liegt permanent die Punkte erhöht werden, was nicht sinn der Sache ist.
Aber wie kann ich es regeln dass jede 10te Sekunde Zehn punkte addiert werden mit der Gewissheit das tatsächlich jede 10te Sekunde die Punkte erreicht werden?

Vielen Dank!

2

30.01.2016, 23:18

Zähle selber

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
float pointTime = 0;

eachTick(float elapsed_time){
   pointTime += elapsed_time;
   if(pointTime > TIME_PER_POINT){
      Points += 10;
      pointTIme -= TIME_PER_POINT;
   }
}


Einzig der Fall, dass auf einem sehr langsamen PC eachTick() nur z.B. alle 11s aufgerufen wird, ist nicht beachtet. (Das kannst du aber recht einfach einbauen :)) Das Problem kann vor allem Auftreten, wenn du statt alle 10s 10 Punkte auf alle 0.1s 0.1 Punkte umsteigst...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

31.01.2016, 08:27

Warum so kompliziert?
Gesamtpunkte = Punkte_für_Asteroiden + Gesamte_Spielzeit_in_Sekunden / 10;
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

31.01.2016, 09:48

Super, Vielen Dank!!
Da zerbrech ich mir den Kopf über komplizierte Lösungswege und überseh dabei komplett die einfachen. :dead:

Werbeanzeige