Guest User

Code

a guest
Oct 22nd, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.85 KB | None | 0 0
  1. #include <SFML/System.hpp>
  2. #include <SFML/Graphics.hpp>
  3. #include <sstream>
  4.  
  5. using namespace sf;
  6. int main()
  7. {
  8. const int width = 640;
  9. const int height= 480;
  10.  
  11. // Create window
  12. sf::Vector2f screenDimensions(800, 600);
  13.  
  14. sf::RenderWindow window;
  15. window.create (sf::VideoMode(screenDimensions.x, screenDimensions.y), "SFML game");
  16. // Limit frame-rate
  17. window.setFramerateLimit(60);
  18.  
  19. // Keep track of the frametime
  20. sf::Clock frametime;
  21.  
  22. Font font;
  23. if (!font.loadFromFile("HelveticaNeue-UltraLight.otf"))
  24. return EXIT_FAILURE;
  25.  
  26. // Big floor
  27. sf::RectangleShape floor(sf::Vector2f(1000.f, 50.f));
  28. floor.setPosition(0.f, 400.f);
  29. floor.setFillColor(sf::Color(10, 180, 30));
  30.  
  31. //Big floor 2
  32. sf::RectangleShape floor2(sf::Vector2f(500.f, 50.f));
  33. floor2.setPosition(1000.f, 700.f);
  34. floor2.setFillColor(sf::Color(10, 200, 30));
  35.  
  36. //Big Floor 3
  37. sf::RectangleShape floor3(sf::Vector2f(500.f, 50.f));
  38. floor3.setPosition(1000.f, 900.f);
  39. floor3.setFillColor(sf::Color(10, 200, 30));
  40.  
  41. //platform1
  42. sf::RectangleShape platform(sf::Vector2f(90.f, 50.f));
  43. platform.setPosition(1140.f, 700.f);
  44. platform.setFillColor(sf::Color::Red);
  45.  
  46. //platform2
  47. sf::RectangleShape platform2(sf::Vector2f(200.f, 50.f));
  48. platform2.setPosition(1600.f, 700.f);
  49. platform2.setFillColor(sf::Color::Yellow);
  50.  
  51. //platform3
  52.  
  53. sf::RectangleShape platform3(sf::Vector2f(200.f, 50.f));
  54. platform3.setPosition(1800.f, 700.f);
  55. platform3.setFillColor(sf::Color::Yellow);
  56.  
  57. //platform4
  58.  
  59. sf::RectangleShape floor4(sf::Vector2f(1000.f, 50.f));
  60. floor4.setPosition(0.f, 400.f);
  61. floor4.setFillColor(sf::Color(10, 180, 30));
  62.  
  63. //platform5
  64.  
  65. sf::RectangleShape floor5(sf::Vector2f(200.f, 50.f));
  66. floor5.setPosition(2200.f, 700.f);
  67. floor5.setFillColor(sf::Color::Green);
  68.  
  69. //Circle
  70. sf::CircleShape shape(50);
  71. shape.setFillColor(sf::Color(100, 250, 50));
  72.  
  73. // Movable player
  74. sf::RectangleShape player(sf::Vector2f(40.f, 40.f));
  75. player.setOrigin(20.f, 20.f);
  76. player.setPosition(400.f, 40.f);
  77. player.setFillColor(sf::Color(10, 30, 180));
  78.  
  79. // Player for level 2
  80. sf::RectangleShape player1(sf::Vector2f(40.f, 40.f));
  81. player1.setOrigin(20.f, 20.f);
  82. player1.setPosition(400.f, 40.f);
  83. player1.setFillColor(sf::Color(10, 30, 180));
  84.  
  85. // Player speed
  86. sf::Vector2f speed(3.f, 3.f);
  87.  
  88. // Platform speed
  89. sf::Vector2f platspeed(3.f, 3.f);
  90.  
  91. // Gravity value
  92. const float gravity = 980.f;
  93.  
  94. // Check if we're touching any floor/box
  95. bool touching = false;
  96.  
  97. //view
  98. sf::View view;
  99.  
  100. view.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
  101. view.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
  102.  
  103. sf::Vector2f position(screenDimensions.x / 2, screenDimensions.y / 2);
  104.  
  105. //view1
  106. sf::View view1;
  107.  
  108. view1.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
  109. view1.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
  110.  
  111.  
  112. //Intro
  113. Text title("TEST PLATFORMER",font,50);
  114. title.setPosition(width/2-title.getGlobalBounds().width/2,100);
  115. title.setColor(Color::Blue);
  116.  
  117. Text start("PRESS ENTER TO CONTIUE",font,30);
  118. start.setPosition(width/2-start.getGlobalBounds().width/2,400);
  119. start.setColor(Color::Red);
  120.  
  121. //Welcome to level 2
  122. Text LEVEL2("WELCOME TO LEVEL 2",font,50);
  123. LEVEL2.setPosition(width/2-title.getGlobalBounds().width/2,100);
  124. LEVEL2.setColor(Color::Blue);
  125.  
  126.  
  127. //Level state
  128. enum state {STARTSCREEN, Level1, Level2};
  129.  
  130. int GameState=STARTSCREEN;
  131.  
  132. while(window.isOpen())
  133. {
  134. window.clear();
  135. switch(GameState)
  136. {
  137. case STARTSCREEN:
  138. window.draw(title);
  139. window.draw(start);
  140. break;
  141. case Level1:
  142. window.setView(view);
  143. window.draw(player);
  144. window.draw(floor);
  145. window.draw(floor2);
  146. window.draw(floor3);
  147. window.draw(platform);
  148. window.draw(platform2);
  149. window.draw(platform3);
  150. break;
  151. case Level2:
  152. window.setView(view1);
  153. window.draw(player);
  154. window.draw(floor4);
  155. window.draw(floor5);
  156. window.draw(LEVEL2);
  157. break;
  158.  
  159. }
  160. window.display();
  161.  
  162.  
  163. // Get delta time for frame-rate depended movement
  164. float dt = frametime.restart().asSeconds();
  165.  
  166. // Event handling
  167. sf::Event event;
  168. while(window.pollEvent(event))
  169. {
  170. if ( (event.type == Event::Closed) ||
  171. ((event.type == Event::KeyPressed) && (event.key.code==Keyboard::Escape)) )
  172. window.close();
  173. else
  174. if ((event.type == Event::KeyPressed) && (GameState == STARTSCREEN))
  175. GameState=Level1;
  176. }
  177. if (GameState!=Level1)
  178. continue;
  179.  
  180. // Slow down horizontal speed
  181. if(speed.x > 6.f)
  182. speed.x -= 3.f;
  183. else if(speed.x < -6.f)
  184. speed.x += 3.f;
  185. else
  186. speed.x = 0.f;
  187.  
  188. // Adjust vertical speed
  189. if(touching)
  190. speed.y = gravity;
  191. else if(speed.y < gravity)
  192. speed.y += 10.f;
  193. else if(speed.y > gravity)
  194. speed.y = gravity;
  195.  
  196. // Horizontal movement
  197. if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  198. speed.x = 0.f;
  199. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  200. speed.x = -120.f;
  201. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  202. speed.x = 120.f;
  203. else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Return))
  204. GameState!=Level1;
  205.  
  206.  
  207. // Jumping
  208. if(sf::Keyboard::isKeyPressed(sf::Keyboard::W) && touching)
  209. speed.y = -300.f;
  210.  
  211. // Move the player
  212. player.setPosition(player.getPosition().x + speed.x * dt, player.getPosition().y + speed.y * dt);
  213.  
  214.  
  215.  
  216. //Moving the last platform
  217. // Check collision & position adjustment
  218. if(floor.getGlobalBounds().intersects(player.getGlobalBounds())) // Floor
  219. {
  220. player.setPosition(player.getPosition().x, floor.getPosition().y-player.getOrigin().y);
  221. touching = true;
  222. }
  223. else if(floor2.getGlobalBounds().intersects(player.getGlobalBounds()))
  224. {
  225. player.setPosition(player.getPosition().x, floor2.getPosition().y-player.getOrigin().y);
  226. touching = true;
  227. }
  228. else if(platform.getGlobalBounds().intersects(player.getGlobalBounds()))
  229. {
  230. player.setFillColor(sf::Color::Red);
  231. player.setPosition(player.getPosition().x, platform.getPosition().y-player.getOrigin().y);
  232. touching = true;
  233. }
  234. else if (platform2.getGlobalBounds().intersects(player.getGlobalBounds()))
  235. {
  236. player.setPosition(player.getPosition().x, platform2.getPosition().y-player.getOrigin().y);
  237. touching = true;
  238.  
  239. }
  240. else if (platform3.getGlobalBounds().intersects(player.getGlobalBounds()))
  241. {
  242. player.setPosition(player.getPosition().x, platform3.getPosition().y-player.getOrigin().y);
  243. touching = true;
  244.  
  245. }
  246. else if (floor4.getGlobalBounds().intersects(player.getGlobalBounds()))
  247. {
  248. player.setPosition(player.getPosition().x, floor4.getPosition().y-player.getOrigin().y);
  249. touching = true;
  250.  
  251. }
  252. else if (floor5.getGlobalBounds().intersects(player.getGlobalBounds()))
  253. {
  254. player.setPosition(player.getPosition().x, floor5.getPosition().y-player.getOrigin().y);
  255. touching = true;
  256.  
  257. }
  258. else if (floor3.getGlobalBounds().intersects(player.getGlobalBounds()))
  259. {
  260. player.setPosition(player.getPosition().x, floor3.getPosition().y-player.getOrigin().y);
  261. touching = true;
  262. GameState=Level2;
  263.  
  264. }
  265. else if (floor4.getGlobalBounds().intersects(player.getGlobalBounds()))
  266. {
  267. player.setPosition(player.getPosition().x, floor4.getPosition().y-player.getOrigin().y);
  268. touching = true;
  269.  
  270. }
  271.  
  272. else // We're not colliding
  273. touching = false;
  274.  
  275.  
  276.  
  277.  
  278. position.x = player.getPosition().x + 10 - (screenDimensions.x / 2);
  279. position.y = player.getPosition().y + 10 - (screenDimensions.y / 2);
  280.  
  281. if(position.x < 0)
  282. position.x = 0;
  283. if(position.y < 0)
  284. position.y = 0;
  285.  
  286. view.reset(sf::FloatRect(position.x, position.y, screenDimensions.x, screenDimensions.y));
  287.  
  288.  
  289.  
  290. }
  291. }
Advertisement
Add Comment
Please, Sign In to add comment