Frage zu meinem Programm
-
Hier erstmal mein Code:
main.cpp:
#include <iostream> #include "Framework.hpp" #include "StateManager.hpp" int main() { getchar(); return 0; }Framework.hpp:
#ifndef FRAMEWORK_HPP #define FRAMEWORK_HPP #include <SFML\Graphics.hpp> #include "StateManager.hpp" class Framework { public: Framework(); ~Framework(); void RunApplication(); private: sf::RenderWindow *mMainWindow; sf::Event *mMainEvent; sf::Clock *mMainClock; StateManager *mMainStateManager; void Render(); void Update(); void HandleEvents(); void CalculateFrametime(); float mFrameTime; }; #endifFramework.cpp:
#include "Framework.hpp" Framework::Framework() { mMainWindow = new sf::RenderWindow(sf::VideoMode(800,600,32),"Moorhun",sf::Style::Default); mMainEvent = new sf::Event; mMainClock = new sf::Clock; mMainClock->restart(); mMainStateManager = new StateManager(mMainWindow,mMainEvent); } Framework::~Framework() { mMainWindow = NULL; mMainEvent = NULL; delete mMainWindow; delete mMainEvent; } void Framework::RunApplication() { while(mMainWindow->isOpen()) { HandleEvents(); Update(); Render(); } } void Framework::Render() { mMainWindow->clear(); mMainStateManager->Render(); mMainWindow->display(); } void Framework::Update() { CalculateFrametime(); mMainStateManager->Update(mFrameTime); } void Framework::HandleEvents() { while (mMainWindow->pollEvent(*mMainEvent)) { if(mMainEvent->type == sf::Event::Closed) { mMainWindow->close(); mMainStateManager->HandleEvents(); } } } void Framework::CalculateFrametime() { mFrameTime = static_cast <float> (mMainClock->getElapsedTime().asSeconds()); mMainClock->restart(); }StateManager.hpp:
#ifndef STATEMANAGER_HPP #define STATEMANAGER_HPP #include <SFML\Graphics.hpp> class StateManager { public: StateManager(sf::RenderWindow *rw,sf::Event *ev); ~StateManager(); void Render(); void Update(float Frametime); void HandleEvents(); void AddSate(); void SetState(); private: sf::RenderWindow *mMainWindow; sf::Event *mStateEvent; }; #endifStateManager.cpp:
#include "StateManager.hpp" StateManager::StateManager(sf::RenderWindow *rw,sf::Event *ev) { mMainWindow = rw; mStateEvent = ev; } StateManager::~StateManager() { } void StateManager::Render() { } void StateManager::Update(float Frametime) { } void StateManager::HandleEvents() { } void StateManager::AddSate() { } void StateManager::SetState() { }so nun zu meiner Frage: Was habe ich falsch gemacht, denn bei mir öffnet sich kein "Moorhun.exe"-Fenster sondern nur ein cmd Fenster? Habe ich das falsche Projekt ausgewählt (Leeres Projekt)?
-
Du rufst keinerlei Funktion abseits der Standardfunktion getchar() auf. Wieso sollte sich ein Fenster öffnen? Du meinst vorallem vermute ich das sf::RenderWindow? Dafür müsstest du eben dies erstellen.
Wie du das machst kannst du im Internet zu haufen finden (die offizielle Homepage hat dazu hinreichend Material parat)
-
Sorry hab ich vergessen:
https://www.youtube.com/watch?v=6MS8jjFWbeQ&list=PL9vqpRoHSNDd_aV1Erfl8mQuzSCRAirZi&index=1
https://www.youtube.com/watch?v=2OCNqc1IrS4&list=PL9vqpRoHSNDd_aV1Erfl8mQuzSCRAirZi&index=2
Hab mir die 2 Parts angeschaut und bei dem klappts...Woran liegt das?
-
Du musst in der mainfunktion die Methode "RunApplication" aufrufen.
#include <iostream> #include "Framework.hpp" #include "StateManager.hpp" int main() { Framework f; f.RunApplication(); return 0; } Im übrigen rate ich von dem Tutorial ab, da hat scheinbar jemand keine Ahnung vom Programmieren, anders kann ich mir folgende Zeilen nicht erklären: [code="cpp"]mMainWindow = NULL; mMainEvent = NULL; delete mMainWindow; delete mMainEvent;
-
Ok.
Danke für deine Hilfe