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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#ifndef FRAMEWORK_HPP #define FRAMEWORK_HPP #include <iostream> #include <SFML/Graphics.hpp> class Framework { public: Framework(); ~Framework(); void run(); private: void update(); void handleEvents(); void render(); void quit(); sf::RenderWindow *pRenderWindow; sf::Event *pMainEvent; bool mRun; }; #endif |
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#include "Framework.hpp" Framework::Framework(){ pRenderWindow = new sf::RenderWindow(sf::VideoMode(600, 800, 32), "Spiel"); pMainEvent = new sf::Event; bool mRun = true; } Framework::~Framework(){ } void Framework::run(){ while (mRun == true) { update(); handleEvents(); render(); quit(); } } void Framework::update(){ } void Framework::handleEvents(){ while (pRenderWindow->pollEvent(*pMainEvent)) { if (pMainEvent->type == sf::Event::Closed) mRun = false; } } void Framework::render(){ pRenderWindow->clear(sf::Color::Green); pRenderWindow->display(); } void Framework::quit(){ if (mRun == false) pRenderWindow->close(); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <SFML/Graphics.hpp> #include "Framework.hpp" int main() { Framework frmwrk; frmwrk.run(); return 0; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Muss die sf::RenderWindow Instanz wirklich aufm Heap liegen?
Wozu ist eine weitere, auf dem Heap liegende sf::Event Instanz da? Warum nicht als temporäre Variable einfach vor dem pollEvent-Aufruf? Solltest du die Events speichern wollen, müsstest du sowieso einen Vektor anlegen, ansonsten hat die Instanz immer nur das zuletzt geschehene Event gespeichert.
Warum kein std::unique_ptr?
MfG
Check
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Window/Event.hpp> #include <SFML/System/Clock.hpp> class Application { public: Application() = default; Application(const Application&) = delete; Application& operator=(const Application&) = delete; int main(const std::vector<std::string>& arguments); private: bool run(const sf::Time& step){/*do base-stuff*/} void readArguments(const std::vector<std::string>& /*arguments*/){/*read commandline parameters*/} void handleEvents(); private: sf::RenderWindow _renderApp {sf::VideoMode(800U, 600U), "sppro rulez!1!"}; }; int Application::main(const std::vector<std::string>& arguments) { readArguments(arguments); sf::Clock clock; sf::Time timeSinceLastUpdate; while(_renderApp.isOpen()) { timeSinceLastUpdate += clock.restart(); handleEvents(); while(timeSinceLastUpdate > sf::seconds(1.f / 60.f)) { timeSinceLastUpdate -= sf::seconds(1.f / 60.f); handleEvents(); run(sf::seconds(1.f / 60.f)); } _renderApp.clear(); _renderApp.display(); } return 0; } void Application::handleEvents() { sf::Event event; while(_renderApp.pollEvent(event)) { if(event.type == sf::Event::Closed) _renderApp.close(); } } int main(int argc, char** args) { std::vector<std::string> arguments; for(int i = 1; i < argc; ++i) arguments.push_back(args[i]); Application app; return app.main(arguments); } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Muss die sf::RenderWindow Instanz wirklich aufm Heap liegen?
Wozu ist eine weitere, auf dem Heap liegende sf::Event Instanz da? Warum nicht als temporäre Variable einfach vor dem pollEvent-Aufruf? Solltest du die Events speichern wollen, müsstest du sowieso einen Vektor anlegen, ansonsten hat die Instanz immer nur das zuletzt geschehene Event gespeichert.
Warum kein std::unique_ptr?
MfG
Check
Hey,
ich lerne zur Zeit C++ und wollte mal zur Abwechslung ein kleines einfaches Spiel mit SFML programmieren.
Das Buch wird eher überfordernd sein.
Werbeanzeige