Guest User

sfml

a guest
Dec 1st, 2013
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <SFML/Window.hpp>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6. using namespace sf;
  7.  
  8. int main()
  9. {
  10.  
  11. const int width = 800;
  12. const int height= 600;
  13.  
  14.  
  15. //Window rendering
  16. sf::Vector2f screenDimensions(800, 600);
  17. sf::RenderWindow window(sf::VideoMode(screenDimensions.x, screenDimensions.y), "SFML game");
  18.  
  19. window.setFramerateLimit(60);
  20.  
  21. sf::Clock frametime;
  22.  
  23. //in-game screen view
  24. sf::View view;
  25.  
  26. view.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
  27. view.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
  28.  
  29. sf::Vector2f position(screenDimensions.x / 2, screenDimensions.y / 2);
  30.  
  31.  
  32. sf::Texture texture;
  33. if (!texture.loadFromFile("PlayerShip.png"))
  34. {
  35. // error...
  36. }
  37.  
  38.  
  39. Texture texture2;
  40. if (!texture.loadFromFile("PlayerShip2.png"))
  41. {
  42. // error...
  43. }
  44. Texture bgtexture;
  45. sf::Sprite bgsprite;
  46.  
  47. if(!bgtexture.loadFromFile("BG.png"))
  48. {
  49. //error
  50. }
  51.  
  52. bgsprite.setTexture(bgtexture);
  53. bgsprite.setScale(9.0f, (float)screenDimensions.y / bgtexture.getSize().y);
  54.  
  55. Sprite shape;
  56. shape.setTexture(texture);
  57. shape.setTextureRect(sf::IntRect(0, 0, 100, 83));
  58. shape.setPosition(400.f,40.f);
  59.  
  60.  
  61. RectangleShape projectile(sf::Vector2f(40., 40.f));
  62. projectile.setFillColor(sf::Color::Black);
  63.  
  64.  
  65.  
  66. Font font;
  67. if (!font.loadFromFile("HelveticaNeue-UltraLight.otf"))
  68. return EXIT_FAILURE;
  69.  
  70. Text title("Shooter",font,50);
  71. title.setPosition(width/2-title.getGlobalBounds().width/2,100);
  72. title.setColor(Color::Blue);
  73.  
  74. Text start("Play",font,30);
  75. start.setPosition(width/2-start.getGlobalBounds().width/2,200);
  76. start.setColor(Color::Green);
  77.  
  78. Text start1("Options",font,30);
  79. start1.setPosition(width/2-start.getGlobalBounds().width/2,300);
  80. start1.setColor(Color::Red);
  81.  
  82. Text start2("Quit",font,30);
  83. start2.setPosition(width/2-start.getGlobalBounds().width/2,400);
  84. start2.setColor(Color::Black);
  85.  
  86.  
  87. sf::Vector2f speed (3.f, 3.f);
  88.  
  89. bool holding = true;
  90.  
  91. int GameState;
  92.  
  93. enum states {INTRO, PLAYING, LOST};
  94.  
  95. GameState = {INTRO};
  96.  
  97. while (window.isOpen())
  98. {
  99. window.clear(Color::White);
  100. switch(GameState)
  101. {
  102. case INTRO:
  103. window.draw(title);
  104. window.draw(start);
  105. window.draw(start1);
  106. window.draw(start2);
  107. break;
  108. case PLAYING:
  109. window.setView(view);
  110. window.draw(shape);
  111. break;
  112. }
  113. window.display();
  114.  
  115. sf::Event event;
  116.  
  117. while (window.pollEvent(event))
  118. {
  119. if ( (event.type == Event::Closed) ||
  120. ((event.type == Event::KeyPressed) && (event.key.code==Keyboard::Escape)) )
  121. window.close();
  122. else
  123. if ((event.type == Event::KeyPressed) && (GameState == INTRO))
  124. GameState=PLAYING;
  125. }
  126.  
  127. if (GameState!=PLAYING)
  128. continue;
  129.  
  130. float dt = frametime.restart().asSeconds();
  131.  
  132. if(speed.x > 6.f)
  133. speed.x -= 1.f;
  134. else if(speed.x < -6.f)
  135. speed.x += 1.f;
  136. else
  137. speed.x = 0.f;
  138.  
  139. // Adjust vertical speed
  140. if(speed.y > 6.f)
  141. speed.y -= 1.f;
  142.  
  143. shape.setPosition(shape.getPosition().x + speed.x * dt, shape.getPosition().y + speed.y * dt);
  144.  
  145. if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
  146. speed.y = 300;
  147. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  148. speed.x = -290;
  149. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  150. speed.x = 290;
  151. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  152. speed.y = -300;
  153.  
  154.  
  155. if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
  156. shape.rotate( 200 * dt);
  157. if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
  158. shape.rotate(- 200 * dt);
  159.  
  160.  
  161.  
  162. if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
  163. window.draw(projectile);
  164.  
  165. position.x = shape.getPosition().x + 10 - (screenDimensions.x / 2);
  166. position.y = shape.getPosition().y + 10 - (screenDimensions.y / 2);
  167.  
  168.  
  169. if(position.x < 0)
  170. position.x = 0;
  171. if(position.y < 0)
  172. position.y = 0;
  173.  
  174.  
  175.  
  176.  
  177. view.reset(sf::FloatRect(position.x, position.y, screenDimensions.x, screenDimensions.y));
  178.  
  179. }
  180.  
  181. return 0;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment