MOFOE

codeBlok

Nov 8th, 2020
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <SFML/Graphics.hpp>
  3. #include <SFML/System.hpp>
  4. #include <SFML/Window.hpp>
  5.  
  6.  
  7. class Game
  8. {
  9. public:Game();
  10. void run();
  11.  
  12. private:
  13. void processEvents();
  14. void update(sf::Time deltaTime);
  15. void render();
  16. void handlePlayerInput(sf::Keyboard::Key key,bool isPressed);
  17.  
  18. private:
  19. sf::RenderWindow mWindow;
  20. sf::CircleShape mPlayer;
  21. bool mIsMovingUp = false;
  22. bool mIsMovingDown = false;
  23. bool mIsMovingLeft = false;
  24. bool mIsMovingRight = false;
  25. float PlayerSpeed = 10.0f;
  26. sf::Time TimePerFrame = sf::seconds(1.f / 60.f);
  27. };
  28.  
  29. Game::Game()
  30. : mWindow(sf::VideoMode(640, 480), "SFML Application")
  31. , mPlayer()
  32. {
  33. mPlayer.setRadius(40.f);
  34. mPlayer.setPosition(100.f, 100.f);
  35. mPlayer.setFillColor(sf::Color::Cyan);
  36. }
  37.  
  38.  
  39.  
  40.  
  41. void Game::handlePlayerInput(sf::Keyboard::Key key,bool isPressed)
  42. {
  43. if (key == sf::Keyboard::W)
  44. mIsMovingUp = isPressed;
  45. else if (key == sf::Keyboard::S)
  46. mIsMovingDown = isPressed;
  47. else if (key == sf::Keyboard::A)
  48. mIsMovingLeft = isPressed;
  49. else if (key == sf::Keyboard::D)
  50. mIsMovingRight = isPressed;
  51.  
  52. }
  53.  
  54.  
  55.  
  56. void Game::processEvents()
  57. {
  58. sf::Event event;
  59. while (mWindow.pollEvent(event))
  60. {
  61. switch (event.type)
  62. {
  63. case sf::Event::KeyPressed:
  64. handlePlayerInput(event.key.code, true);
  65. break;
  66. case sf::Event::KeyReleased:
  67. handlePlayerInput(event.key.code, false);
  68. break;
  69. case sf::Event::Closed:
  70. mWindow.close();
  71. break;
  72. }
  73. }
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80. void Game::update(sf::Time deltaTime)
  81. {
  82. sf::Vector2f movement(0.f, 0.f);
  83. if (mIsMovingUp)
  84. movement.y -= PlayerSpeed;
  85. if (mIsMovingDown)
  86. movement.y += PlayerSpeed;
  87. if (mIsMovingLeft)
  88. movement.x -= PlayerSpeed;
  89. if (mIsMovingRight)
  90. movement.x += PlayerSpeed;
  91.  
  92. mPlayer.move(movement * deltaTime.asSeconds());
  93. }
  94.  
  95.  
  96.  
  97. void Game::run()
  98. {
  99. sf::Clock clock;
  100. sf::Time timeSinceLastUpdate = sf::Time::Zero;
  101. while (mWindow.isOpen())
  102. {
  103. processEvents();
  104. timeSinceLastUpdate += clock.restart();
  105. while (timeSinceLastUpdate > TimePerFrame)
  106. {
  107. timeSinceLastUpdate -= TimePerFrame;
  108. processEvents();
  109. update(TimePerFrame);
  110. }
  111. render();
  112. }
  113. }
  114.  
  115. void Game::render()
  116. {
  117. mWindow.clear();
  118. mWindow.draw(mPlayer);
  119. mWindow.display();
  120. }
  121.  
  122.  
  123. int main()
  124. {
  125. Game game;
  126. game.run();
  127. }
Add Comment
Please, Sign In to add comment