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 |
void Game::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; while (Window.isOpen()) { ProcessEvents(); timeSinceLastUpdate += clock.restart(); while (timeSinceLastUpdate > TimePerFrame) { timeSinceLastUpdate -= TimePerFrame; ProcessEvents(); update(TimePerFrame); } render(); } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void Game::update(sf::Time deltaTime) { sf::Vector2f movement(0.f, 0.f); if (IsMovingUp) movement.y -= PlayerSpeed; if (IsMovingDown) movement.y -= PlayerSpeed; if (IsMovingLeft) movement.x -= PlayerSpeed; if (IsMovingRight) movement.x += PlayerSpeed; Shape.move(movement * deltaTime.asSeconds()); } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (11.12.2016, 09:07)
Und welchen Wert genau hat nun "PlayerSpeed" überhaupt?
Die Sinnhaftigkeit des ProcessEvents in Zeile 12 zweifle ich allerdings mal an.
Genau deswegen benutzt du ja deltaTime. Aber das muss ich dir vermutlich gar nicht erklären/quote]
eigentlich hab ich deltatime noch nicht so richtig verstanden ich dachte wenn ich mir denn beispiel kompiliere
und mir mehrmals angucke und darüber nachdenke würde ich es langsam verstehn was sich aber in diesen beispiel nicht zeigen lässt
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#include "game.h" Game::Game() : Window(sf::VideoMode(640, 480), "SFML"), Shape() { TimePerFrame = sf::seconds(1.f / 60.f); Window.setFramerateLimit(60); float PlayerSpeed = 1.f; Shape.setRadius(40.f); Shape.setPosition(100.f, 100.f); Shape.setFillColor(sf::Color::Cyan); } void Game::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; while (Window.isOpen()) { ProcessEvents(); timeSinceLastUpdate += clock.restart(); while (timeSinceLastUpdate > TimePerFrame) { timeSinceLastUpdate -= TimePerFrame; ProcessEvents(); update(TimePerFrame); } render(); } } void Game::ProcessEvents() { sf::Event Event; while (Window.pollEvent(Event)) { switch (Event.type) { case sf::Event::KeyPressed: handlePlayerInput(Event.key.code, true); break; case sf::Event::KeyReleased: handlePlayerInput(Event.key.code, false); break; case sf::Event::Closed: Window.close(); break; } } } void Game::update(sf::Time deltaTime) { sf::Vector2f movement(0.f, 0.f); if (IsMovingUp) movement.y -= PlayerSpeed; if (IsMovingDown) movement.y -= PlayerSpeed; if (IsMovingLeft) movement.x -= PlayerSpeed; if (IsMovingRight) movement.x += PlayerSpeed; Shape.move(movement * deltaTime.asSeconds()); } void Game::render() { Window.clear(); Window.draw(Shape); Window.display(); } void Game::handlePlayerInput(sf::Keyboard::Key key, bool isPressed) { if (key == sf::Keyboard::W) IsMovingUp = isPressed; else if (key == sf::Keyboard::S) IsMovingDown = isPressed; else if (key == sf::Keyboard::S) IsMovingLeft == isPressed; else if (key == sf::Keyboard::D) IsMovingRight == isPressed; |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include "game.h" #include <iostream> Game::Game() : Window(sf::VideoMode(640, 480), "SFML"), Shape() { TimePerFrame = sf::seconds(1.f / 240.f); Shape.setRadius(40.f); Shape.setPosition(100.f, 100.f); Shape.setFillColor(sf::Color::Cyan); } Game::~Game() { } void Game::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; while (Window.isOpen()) { ProcessEvents(); timeSinceLastUpdate += clock.restart(); while (timeSinceLastUpdate > TimePerFrame) { std::cout << 1.0f / timeSinceLastUpdate.asSeconds() << std::endl; timeSinceLastUpdate -= TimePerFrame; ProcessEvents(); update(TimePerFrame); } render(); } } void Game::ProcessEvents() { sf::Event Event; while (Window.pollEvent(Event)) { switch (Event.type) { case sf::Event::KeyPressed: handlePlayerInput(Event.key.code, true); break; case sf::Event::KeyReleased: handlePlayerInput(Event.key.code, false); break; case sf::Event::Closed: Window.close(); break; } } } void Game::update(sf::Time deltaTime) { float PlayerSpeed = 50.f; sf::Vector2f movement(0.f, 0.f); if (IsMovingUp) movement.y -= PlayerSpeed; if (IsMovingDown) movement.y += PlayerSpeed; if (IsMovingLeft) movement.x -= PlayerSpeed; if (IsMovingRight) movement.x += PlayerSpeed; Shape.move(movement * deltaTime.asSeconds()); } void Game::render() { Window.clear(); Window.draw(Shape); Window.display(); } void Game::handlePlayerInput(sf::Keyboard::Key key, bool isPressed) { if(key == sf::Keyboard::W) IsMovingUp = isPressed; else if (key == sf::Keyboard::S) IsMovingDown = isPressed; else if (key == sf::Keyboard::A) IsMovingLeft = isPressed; else if (key == sf::Keyboard::D) IsMovingRight = isPressed; } |
ich hab nur den PlayerSpeed in der update funktion deklariert
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#include "game.h" #include <iostream> Game::Game() : Window(sf::VideoMode(640, 480), "SFML"), Shape() { TimePerFrame = sf::seconds(1.f / 1000.f); PlayerSpeed = 50.f; Shape.setRadius(40.f); Shape.setPosition(100.f, 100.f); Shape.setFillColor(sf::Color::Cyan); } Game::~Game() { } void Game::run() { sf::Clock clock; sf::Time timeSinceLastUpdate = sf::Time::Zero; while (Window.isOpen()) { ProcessEvents(); timeSinceLastUpdate += clock.restart(); while (timeSinceLastUpdate > TimePerFrame) { std::cout << 1.0f / timeSinceLastUpdate.asSeconds() << std::endl; timeSinceLastUpdate -= TimePerFrame; ProcessEvents(); update(TimePerFrame); } render(); } } void Game::ProcessEvents() { sf::Event Event; while (Window.pollEvent(Event)) { switch (Event.type) { case sf::Event::KeyPressed: handlePlayerInput(Event.key.code, true); break; case sf::Event::KeyReleased: handlePlayerInput(Event.key.code, false); break; case sf::Event::Closed: Window.close(); break; } } } void Game::update(sf::Time deltaTime) { sf::Vector2f movement(0.f, 0.f); if (IsMovingUp) { movement.y -= PlayerSpeed; } if (IsMovingDown) { movement.y += PlayerSpeed; } if (IsMovingLeft) { movement.x -= PlayerSpeed; } if (IsMovingRight) { movement.x += PlayerSpeed; } Shape.move(movement * deltaTime.asSeconds()); } void Game::render() { Window.clear(); Window.draw(Shape); Window.display(); } void Game::handlePlayerInput(sf::Keyboard::Key key, bool isPressed) { if (key == sf::Keyboard::W) IsMovingUp = isPressed; else if (key == sf::Keyboard::S) IsMovingDown = isPressed; else if (key == sf::Keyboard::A) IsMovingLeft = isPressed; else if (key == sf::Keyboard::D) IsMovingRight = isPressed; } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CrazylLoLipop33« (11.12.2016, 17:07)
Werbeanzeige