Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: FAQ - Grafik-/Spieleprogrammierung ::  Korrekte Spielgeschwindigkeit (Framebremse)  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
TomasRiker
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.09.2001
Beiträge: 2959
Beitrag TomasRiker Mitglied 07:02:00 02.06.2002   Titel:              Zitieren

Zitat:
Original erstellt von Shinji Ikari:
Ho ho ho!!!

Wenn ich das irgendwo gefunden hätte, hätte ich doch nicht
dieses Forum hier zugepostet, oder? *g*

Trotzdem meine Fragen:

- Stimmt der Code so?
- Was ist mit Threads?
- Was ist mit Timern?

Danke...

PS: Warum wird V_O_R_R_A_U_S eigentlich zensiert?


Im ******* wird zensiert, weil es falsch ist. Es heißt "im Voraus".
Also der Code sieht gut aus, ich mache es fast genauso.
Der Windows-Timer ist zu ungenau und außerdem würde dann wahrscheinlich bei zu langsamen Szenen der Stack überlaufen oder es würde genauso langsam laufen wie normalerweise auch.
Threads zu benutzen halte ich für übertrieben.

_________________
http://www.spieleprogrammierer.de
Spiele, Tutorials & Infos zu meinen Büchern!
Werbeunterbrechung
Kostik
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.04.2002
Beiträge: 20
Beitrag Kostik Mitglied 07:49:00 02.06.2002   Titel:              Zitieren

Also ich hab das mal vor kurzem Programmiert, aber mit einer Basic Sprache (BlitzBasic3D), hat prima gefunzt, hier der Pseudocode dazu:

// erstmal die differenz zwischen den Frames bilden
aktuelleZeit = GetCurrentTime()
Differenz = aktuelleZeit - ZeitDesVergangenenFrame
ZeitDesVergangenenFrame = aktuelleZeit
// So, jetzt hast du die die Differenz gebildet, willst du jetzt ein Objekt in x richtung 30 pixel/sec fahren lassen so musst du einfach folgendes machen:

x= x + 30*Differenz
DrawObject(x,y)

// Das wars. Wie du mit C++ die aktuelle Zeit herbekommst weis ich auch nicht, da ich gerade erst mit C++ angefangen hab und bei einfachen Konsolenanwendungen gerade bin (mit BlitzBasic3D war es sehr einfach, der Code sah fast so aus)....
Shinji Ikari
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.11.2001
Beiträge: 34
Beitrag Shinji Ikari Mitglied 09:04:00 02.06.2002   Titel:              Zitieren

Jo, BlitzBasic kenn ich. Is eigentlich ganz lustig, hab aber damit
aufgehört...

Ähm. Wenn du 30 px/s geschwindigkeit haben willst, und du zB. eine
Differenz von 20 ms hast. dann bewegt sich dein Objekt nach deinem
Code mit 30000 px/s !!!

Naja..
Obiges gilt natürlich nur für den Fall, dass GetCurrentTime()
Millisekunden wiedergibt.. Wenns zB. Sekunden wiedergibt, ginge
das ganze... aber dann müssten die Sekunden bis auf die 3te Nachkomma-
stelle genau zurückgegeben werden... Dass eine Funktion einen Wert
wie zB. 5,025 sek. zurückgibt kann ich mir nur schwer vorstellen...
Was machst du denn dann, wenn die sekunden von 59 wieder auf 0
umspringen??? wenn du in dem Moment die Differenz ausrechnest, hast
du ein Problem *g*

Beim Timer, wie ich ihn verwendet habe wird die Zeit wiedergegeben,
die der PC schon an ist. und zwar in Millisekunden... Das ist IMHO
genauer und praktischer :)

_________________
Um zum Mond zu fliegen brauchte man zwei C-64. Um Windows XP zu booten braucht man 700 MHz, 256 MB RAM und 4 GByte Festplatte. Irgendwas stimmt doch nicht.
TGGC
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.02.2001
Beiträge: 1895
Beitrag TGGC Mitglied 10:36:00 02.06.2002   Titel:              Zitieren

Die Zeit bekommt man z.b. mit dem XGamesSDK mit der Klasse "XTimer" ;).


Bye, TGGC

_________________
Was wirklich zählt, ist klar.
http://www.fh-merseburg.de/~roesch | ICQ#: 109019884
Kostik
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.04.2002
Beiträge: 20
Beitrag Kostik Mitglied 23:57:00 02.06.2002   Titel:              Zitieren

Du hast schon recht, GetCurrentTime müsste sekunden widergeben, BlitzBasic3D gibt es in millisecunden wider, die funktion GetCurrentTime() rechnet bei mir halt das ganze in sekunden um, naja ob millisec. oder nur sec. ist eigentlich egal. Das mit dem Timer ist auch eine Lösung obs genauer ist, weis ich nicht, jedenfalls gibts da verschiedene wege die Zeit zu bekommen, der Lösungsansatz bleibt aber der gleiche...
Headhunter
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2000
Beiträge: 3567
Beitrag Headhunter Mitglied 15:16:00 03.06.2002   Titel:              Zitieren

Hi !
Bei www.gamedev.net gibts nen netten Artikel darüber...
Und ab ins FAQ !

_________________
Viele Grüße, headhunter
c++.de :: FAQ - Grafik-/Spieleprogrammierung ::  Korrekte Spielgeschwindigkeit (Framebremse)  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.