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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
#pragma once class CGameState { public: virtual ~CGameState(){}; virtual void Update(){}; virtual void Render(){}; }; |
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 |
#pragma once #include "TSingleton.hpp" #include "GameState.hpp" #define StateManager CStateManager::Get() class CStateManager : public TSingleton<CStateManager> { private: CGameState * GameState; public: CStateManager(); ~CStateManager(); void Update(); void Render(); enum GameStates {Menu,Game}State; void Init(GameStates NGS); }; |
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 |
#include "StateManager.hpp" #include "Game.hpp" #include "Menu.hpp" CStateManager::CStateManager() { } void CStateManager::Init(GameStates NGS) { switch (NGS) { case CStateManager::Menu: GameState = new CMenu break; case CStateManager::Game: GameState = new CGame; break; default: break; } } void CStateManager::Update() { GameState->Update(); } void CStateManager::Render() { GameState->Render(); } CStateManager::~CStateManager() { } |
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 |
int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "ich bin ein Fenster!"); StateManager->Init(StateManager->Game); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); StateManager->Update(); StateManager->Render(); window.display(); } return 0; } |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Urprimat« (21.05.2015, 00:50)
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Stichwort Polymorphiedoch wie weiß ich dann wie der State heißt?
grüßte Urprimat
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class State { virtual void update() = 0; virtual void render() = 0; }; class GameState : public State { void update(); void render(); }; class MenuState : public State { void update(); void render(); }; |
Stichwort Polymorphiedoch wie weiß ich dann wie der State heißt?
grüßte Urprimat
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 class State { virtual void update() = 0; virtual void render() = 0; }; class GameState : public State { void update(); void render(); }; class MenuState : public State { void update(); void render(); };
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Urprimat« (21.05.2015, 11:46)
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Stichwort Polymorphiedoch wie weiß ich dann wie der State heißt?
grüßte Urprimat
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 class State { virtual void update() = 0; virtual void render() = 0; }; class GameState : public State { void update(); void render(); }; class MenuState : public State { void update(); void render(); };
Da weiß er immer noch nicht wie der aktuelle State heist!
Ja so hört sich das gut an.
Die map aber über addState befüllen.
Werbeanzeige