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

Nagamono

Frischling

  • »Nagamono« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

Beruf: Schüler

  • Private Nachricht senden

21

11.02.2011, 21:06

Vielen Dank erstmal für deine Rückmeldung :)
Du könntest zusätzlich noch den Render- und Update-Teil in zwei Funktionen aufteilen
(Das erleichtert später zB ein "Spiel pausieren"-Feature zu implementieren).
Den Teil versteh ich leider nicht ganz :) Meinst du damit, dass ich in eine Funktion alles reinpacke, das ich rendern will
und in eine andere Funktion das dann alles update?

toXic-Coding

Frischling

Beiträge: 7

Wohnort: Essen

Beruf: Elektroniker für Automatisierungstechnik

  • Private Nachricht senden

22

11.02.2011, 23:55

Er meint (denke ich doch mal) das man zwei Funktionen hat, die eine für alles, was gerendert wird, also alle Render-Aufrufe.
In der anderen Funktion alles, was sonst so berechnet wird, also Bewegungen usw.

im Code könnte es grob so aussehen:

C-/C++-Quelltext

1
2
3
4
5
6
RenderFunc ();

if (bPaused == false)
{
 UpdateFunc ();
}



Wenn man jetzt die Pause-Taste drückt, wird in der Tastaturabfrage die Variable bPaused auf true gesetzt.
Im oberen Code wird bPaused dann abgefragt. Falls der Pausemodus aktiviert ist, wird zwar alles noch gerendert, also angezeigt, aber die Szene wird nicht weiter berechnet.

Man könnte jetzt zusätzlich noch angeben, das wenn der Pausemodus aktiviert ist, eine für die Menüführung zuständige Funktion aufgerufen wird, anstelle der normalen Upate-Funktion.


PS.: Mein erster Post hier im Forum :)
Einziges Teammitglied von http://www.toxic-coding.de
Entwickler von http://www.missile-control.de

23

11.02.2011, 23:56

@Lares Hab die Buecher nie gelesen wollt's lediglich mal vorschlagen ;)

Lares

1x Contest-Sieger

  • Private Nachricht senden

24

12.02.2011, 23:26

Vielen Dank erstmal für deine Rückmeldung :)
Du könntest zusätzlich noch den Render- und Update-Teil in zwei Funktionen aufteilen
(Das erleichtert später zB ein "Spiel pausieren"-Feature zu implementieren).
Den Teil versteh ich leider nicht ganz :) Meinst du damit, dass ich in eine Funktion alles reinpacke, das ich rendern will
und in eine andere Funktion das dann alles update?

Er meint (denke ich doch mal) das man zwei Funktionen hat, die eine für alles, was gerendert wird, also alle Render-Aufrufe.
In der anderen Funktion alles, was sonst so berechnet wird, also Bewegungen usw.

Wenn man jetzt die Pause-Taste drückt, wird in der Tastaturabfrage die Variable bPaused auf true gesetzt.
Im oberen Code wird bPaused dann abgefragt. Falls der Pausemodus aktiviert ist, wird zwar alles noch gerendert, also angezeigt, aber die Szene wird nicht weiter berechnet.


Genau so meinte ich das^^

@k|haos
Letzendlich ists eh Nagamonos Entscheidung, kann nur aus eignener Erfahrung reden (wobei es SFML bei mir "damals" leider noch net gab :lol: )

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

25

13.02.2011, 23:35

Jap.
Die Spielzustände solltest du in einzelne Klasse packen. Zum Beispiel eine Klasse CIntro, eine Klasse CMenu und eine Klasse CGame. Dann immer die jeweilife Run Methode der Klassen aufrufen. Was du auch machen kannst ist ein Interface für die Zustände zu schreiben. Das Interface hat dann eine Methode Update() und eine Methode Render(). Jetzt implementiert jede der Stateklassen dieses Interface. Also deine 3 Klassen CIntro, CMenu und CGame. Deine Hauptklasse hat nun nen zeiger auf dein Interface. Je nachdem wie sich der Spielzustand ändert speicherst du in dem Zeiger halt ne Instanz der Klasse CIntro oder CMenu oder CGame. Darauf rufst du dann immer Update() auf, was den Spielzustand dann Updaten würde, also alle berechnungen ausführen würde und Render() was den Spielzustand dann speichern würde. Das ganze nennt sich State-pattern und ist ein Entwurfsmuster. Ist vielleicht erst nicht ganz leicht zu verstehen, wenn mans aber richtig umsetzt, meiner Meinung nach schön und effiziernt;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige