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

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

11

18.04.2010, 17:17

Oder du lässt die Funktion so aber was auch eigentlich besser wäre, wenn du das rendern der Haupschleife überlässt weil dort auch alles gerendert wird.
Ist übersichtlicher.



Naja, das kommt auf seine eigens festgelegte Struktur an, produziert letztendlich das selbe Ergebnis.
Wichtig war halt nur, dass er

C-/C++-Quelltext

1
m_pSpriteHealth->Render()
wiederholt aufruft, die Initialisierungen aber nur einmal.
WIP Website: kevinheese.de

little_Progger

Treue Seele

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

12

18.04.2010, 18:19

Ja, da haste vollkommen Recht.

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

13

18.04.2010, 22:20

Ich wollte jetzt ein Menü programmieren, weiß aber nicht recht wie ich das machen soll.
Eine Klasse für das Menü schreiben? Mit einem Singleton, dass ich in jeder anderen Klasse darauf zugreifen kann.
Und wie kann ich das am besten umsetzen, dass das Spiel im Hintergrund während das Menü dann aufgerufen ist zu pausieren.
Hat irgendjemand vielleicht ein Quellcode von einem kleinen Spiel das ein Menü besitzt?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

14

18.04.2010, 23:09

Stichwort: GameStates. :] Ist wohl die simpelste Methode.
Du musst dir deine Funktionen so zurechtschreiben dass du halt alles immer dann aufrufst, wenn du es brauchst, mal Pseudo-Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Framework-Kram

switch(m_nGamestate)
{    
    case (0):
       EndGame();
       break;
    case (1):
       // Menü zeichnen
    case (2):
       // Anderes Menü
    case (3):
       // Sachen..Blabla.
}

// Framework-Kram


Und der GameState wird halt immer dann verändert, wenns nötig ist. Am besten ist, die höchste Zahl ist immer das Spiel, und dann gehts ins Menü etc etc. Dann könnte ein Druck auf "Escape" den GameState verringern und du würdest das Spiel in Ruhe lassen(auch nicht mehr updaten etc = Pause) und nur Sachen, die für das Menü wichtig sind, zeichnen.
WIP Website: kevinheese.de

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

15

19.04.2010, 00:22

@keks: warum verwendest/empfiehlst du kein enum? da spart man sich ne menge arbeit und kommentare und es ist sicherer.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

16

19.04.2010, 00:39

@keks: warum verwendest/empfiehlst du kein enum? da spart man sich ne menge arbeit und kommentare und es ist sicherer.

Weil ich die generelle Funktionsweise darlegen wollt und keine komplett fertige Umsetzung.^^
WIP Website: kevinheese.de

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

17

19.04.2010, 14:00

Also jetzt zum Verständis, ich muss doch dann in der Mainloop dann den Gamestate überprüfen und je nach Gamestate dann verzweigen und etwas anderes rendern?
Und sind enums nicht eigentlich konstant, wie soll ich dann den Wert des Enums ändern? Oder irr ich mich da?

little_Progger

Treue Seele

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

18

19.04.2010, 14:23

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* Enum deklaration und Anwendung */
#include <iostream>

enum MENUE_STATE
{
    GAMERUN = 1,
    GAMEQUIT = 0,
    OPTIONS = 2

    /* usw.... */
};

int main ()
{
    int Eingabe;

    std::cout << "Bitte Auswahl treffen. " << std::endl;

    std::cin >> Eingabe;

    switch (Eingabe)
    {
    case (GAMERUN):
        {
            std::cout << "Gamerun wurde gewaehlt " << std::endl;
        }break;
    case (GAMEQUIT):
        {
            std::cout << "Gamequit wurde gewaehlt " << std::endl;
        }break;
    case (OPTIONS):
        {
            std::cout << "Options wurde gewaehlt " << std::endl;
        }break;
    }

    std::cin.ignore();
    std::cin.get();

    return 0;
}


Es ist schon eine Konstante aber du kannst diese mit einer Eingabe Variable oder ähnlichem vergleichen und dann Handeln.
Verstehste wie du die verwenden kannst?

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

19

19.04.2010, 14:28

ah k, danke.
Sollte ich für den Gamestate ne eigene Klasse schreiben oder einfach in irgendeine andere Klasse reinstecken?

little_Progger

Treue Seele

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

20

19.04.2010, 14:54

nein Gamestate ist ja nur eine Variable.
einfach so mit in die Header Datei für das Menü mit reinpacken.

Werbeanzeige