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

11

24.01.2016, 19:10

while(Fensterläuft)
{
float AktuelleZeit = SDL_GetTicks();
float AlteZeit = 0;
float DeltaTime = (AktuelleZeit - AlteZeit) / 1000;
AlteZeit = AktuelleZeit;


Nein das ist nicht Richtig, da die Variablen so jedes Frame neue erstellt werden und AlteZeit = AktuelleZeit seine Wirkung verliert (sich die vorherige Zeit merken). Es sollen aber nur die Werte neu gesetzt / berechnet werden.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

12

24.01.2016, 19:18

Ja aber, die Werte texr position oben unten links und rechts stehen in der hauptschleife.
wie müsste ich das denn einsetzen? bzw. wo genau muss ich welchen teil des codes für die zeit platzieren?

wie gesagt sdl ticks verstehe ich nicht, ich brauche eine grundlage die auch funktioniert damit ich im nachhinein damit herumexperimentieren kann um es zu verstehen.
ich habe die variablen jetzt mehrmals an einer anderen stelle im program eingesetzt aber immer noch das selbe ergebnis.
ich verstehe nicht wie das gehen soll.

13

24.01.2016, 20:10

Ja aber, die Werte texr position oben unten links und rechts stehen in der hauptschleife.
wie müsste ich das denn einsetzen? bzw. wo genau muss ich welchen teil des codes für die zeit platzieren?

Vielleicht solltest du nochmal etwas in der Konsole machen und die Grundlagen üben/festigen. Ich habe das Gefühl es fehlt dir hier an dem nötigen Verständnis für C++ generell.

wie gesagt sdl ticks verstehe ich nicht, ich brauche eine grundlage die auch funktioniert damit ich im nachhinein damit herumexperimentieren kann um es zu verstehen.

Fertigen Code hinzuklatschen ist meiner Meinung nach nicht der Richtige Weg, Konzepte zu verstehen (da würde auch Pseudocode helfen), deshalb werde ich das auch in diesem Fall nicht tun.

Um das ganze als Konzept zu verstehen ist meiner Meinung alles nötige geschrieben / verlinkt.

Was genau Verstehst du denn nicht an SDL Ticks?

Zitat

Returns an unsigned 32-bit value representing the number of milliseconds since the SDL library initialized.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

14

24.01.2016, 20:44

Die Grundlagen der objektorientierten Sprache C++ habe ich längst begriffen und kann damit auch selbstständig arbeiten da ich schon seit fast 6 Jahren mit C++ arbeite. Nur Arbeit (wie schon erwähnt) zum ersten mal mit SDL da ich meine Spiele bisher nur in einer GameEngine (gamemaker 8) erstellt habe. Ich erwarte von niemanden einen vorgefertigten Code den ich dann irgendwo hinklatsche ich brauche nur ein EINFACHES Beispiel zur Anwendung der Funktion SDL_GetTicks() und möchte doch einfach nur wissen wo genau man das im Programm einsetzen muss damit es wirklich so arbeitet wie ich es gerne hätte. Wie gesagt es USt das erste mal das ich ein Spiel von 0 auf komplett selbst schreibe ich will ja auch nix kopieren sondern ich will nur erst einmal wie die Zeit genau funktioniert weil ich bisher nur 0 verstehe was das angeht. Du hast mir ja jetzt schonmal die Berechnung der Zeit erklärt dafür bin ich dir ja auch dankbar, aber ich weiß doch nur nicht wie man das jetzt einsetzt weil in den Tutorials bis jetzt jeder das anders verwendet hat weswegen ich durcheinander komme was das alles betrifft.

Ich habe verstanden das SDL_GetTicks die Millisekunden berechnet das habe ich jetzt schon in sehr vielen Tutorials gelesen aber das bringt mich nicht weiter.

Ich verstehe nicht wie man diese Zeit jetzt so einsetzen soll damit ich die Geschwindigkeit der Objekte regulieren kann. Das ist alles.den Rest kann ich auch alleine.

Danke übrigens für die bisherigen Antworten :)
Auch wenn mich das nicht wirklich weiter gebracht hat da ich nach wie vor mit dem selben Problem kämpfen muss nur leider ohne Erfolg. Ich hoffe mir kann jemand helfen ^^

Die Geschwindigkeit ist immer noch zu schnell und unregelmäßig dazu kommt das es schneller und schneller wird. Wie regulieren ich die Zeit so, das mein Bild sich mit der selben Geschwindigkeit pro Sekunden fortbewegt ( auf Tastendruck).

Thandor

Frischling

Beiträge: 84

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

15

24.01.2016, 23:32

Also du hast in deinem Programm doch bestimmt eine Hauptschleife oder so, in der alle wichtigen Dinge für dein Spiel erledigt werden Insbesondere die Logik für das Verschieben und Zeichnen.

Vor dieser Schleife erstellst du dir deine Variablen: alteZeit, aktuelleZeit und initialisierst diese. -> alteZeit = SDL_GetTicks();
Am Anfang der Schleife/des Scheilefenrumpfes holst du dir die aktuelle Zeit. -> aktuelleZeit = SDL_GetTicks();

Dann machst du deine Berechnungen...

Am Ende Der Schleife überschreibst du dann die alte Zeit mit der aktuellen Zeit. -> alteZeit = aktuelleZeit;
Nun ist für den nächsten Schleifendurchlauf die alte Zeit die aktuelle Zeit des gerade beendeten Durchlaufes.

Das wurde eigentlich schon mehrmals beschrieben...
Ich mag pewn.de.

Werbeanzeige