Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

Code

By: a guest on Oct 22nd, 2013  |  syntax: None  |  size: 8.85 KB  |  hits: 35  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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. }