Guest User

SFML

a guest
Apr 11th, 2015
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.51 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <string>
  5. #define win_width 640
  6. #define win_height 640
  7.  
  8. using namespace sf;
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13.     RenderWindow window(VideoMode(win_width, win_height), "SFML works!");
  14.  
  15.     float rect1_pos_x = 0, rect1_pos_y = 0;
  16.     int rect1_width = 20, rect1_height = 140, rect2_width = 50, rect2_height = 50;
  17.  
  18.     float prev_pos_y = 0;
  19.  
  20.     float gravity_force = 0.2;
  21.     float movementSpeed;
  22.  
  23.     bool onFloor = true;
  24.  
  25.     View view1;
  26.     view1.setSize(win_width, win_height);
  27.  
  28.     Texture niebo_tex;
  29.     Texture pagorek_tex;
  30.     Texture trawa_tex;
  31.  
  32.     if(!niebo_tex.loadFromFile("niebo.png")) {
  33.         cout << "niebo.png loading error\n";
  34.     }
  35.     if(!pagorek_tex.loadFromFile("pagorek.png")) {
  36.         cout << "pagorek.png loading error\n";
  37.     }
  38.     if(!trawa_tex.loadFromFile("trawa.png")) {
  39.         cout << "ziemia.png loading error\n";
  40.     }
  41.     string line;
  42.     ifstream level1;
  43.     level1.open("level1.txt", ios::in);
  44.  
  45.     int trawa_count = 30;
  46.  
  47.     float trawa_pos_x[trawa_count], trawa_pos_y[trawa_count];
  48.     int i = 0;
  49.  
  50.     if(level1.is_open()) {
  51.         float y = 0;
  52.         while(getline(level1, line)) {
  53.             for(int x = 0; x < line.length(); x++) {
  54.                 if(line[x] == 'd') {
  55.                     trawa_pos_x[i] = 64 * x;
  56.                     trawa_pos_y[i] = 64 * y;
  57.                     i++;
  58.                 }
  59.             }
  60.             y++;
  61.         }
  62.     }
  63.     else {
  64.         cout << "Unable to load level1.txt/n";
  65.     }
  66.  
  67.     Sprite niebo;
  68.     Sprite pagorek;
  69.     Sprite trawa;
  70.  
  71.     niebo.setTexture(niebo_tex);
  72.     pagorek.setTexture(pagorek_tex);
  73.     trawa.setTexture(trawa_tex);
  74.  
  75.     RectangleShape rect1(Vector2f(rect1_width, rect1_height));
  76.     RectangleShape rect2(Vector2f(rect2_width, rect2_height));
  77.  
  78.     while(window.isOpen()) {
  79.  
  80.         Event event;
  81.         while(window.pollEvent(event)) {
  82.             switch(event.type) {
  83.             case Event::Closed:
  84.                 window.close();
  85.                 break;
  86.             case Event::KeyPressed:
  87.                 break;
  88.             default:
  89.                 break;
  90.             }
  91.         }
  92.  
  93.         rect1_pos_y += gravity_force;
  94.         for(int x = 0; x < trawa_count; x++) {
  95.             if(rect1_pos_x < trawa_pos_x[x] + 64 && rect1_pos_x + rect1_width > trawa_pos_x[x] && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_y < trawa_pos_y[x] + 64) {
  96.                 onFloor = true;
  97.                 rect1_pos_y -= gravity_force;
  98.             }
  99.             else {
  100.                 onFloor = false;
  101.             }
  102.             if(rect1_pos_y < trawa_pos_y[x] + 64 && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_x < trawa_pos_x[x] + 64 && rect1_pos_x + rect1_width > trawa_pos_x[x]) {
  103.                 rect1_pos_x += movementSpeed;
  104.             }
  105.  
  106.             if(rect1_pos_y < trawa_pos_y[x] + 64 && rect1_pos_y + rect1_height > trawa_pos_y[x] && rect1_pos_x + rect1_width > trawa_pos_x[x] - 0.5 && rect1_pos_x + rect1_width < trawa_pos_x[x] + 64) {
  107.                 rect1_pos_x -= movementSpeed;
  108.             }
  109.         }
  110.  
  111.         if(Keyboard::isKeyPressed(Keyboard::D)) {
  112.             rect1_pos_x += movementSpeed;
  113.         }
  114.         if(Keyboard::isKeyPressed(Keyboard::A)) {
  115.             rect1_pos_x -= movementSpeed;
  116.         }
  117.         if(Keyboard::isKeyPressed(Keyboard::S)) {
  118.  
  119.         }
  120.         if(Keyboard::isKeyPressed(Keyboard::W)) {
  121.             if(onFloor == true) {
  122.                 prev_pos_y = rect1_pos_y;
  123.             }
  124.             if(rect1_pos_y < prev_pos_y + 30) {
  125.                 rect1_pos_y -= 0.3;
  126.             }
  127.             cout << onFloor << endl;
  128.         }
  129.         if(Keyboard::isKeyPressed(Keyboard::LShift)) {
  130.             movementSpeed = 0.2;
  131.         }
  132.         else {
  133.             movementSpeed = 0.1;
  134.         }
  135.  
  136.         view1.setCenter(rect1_pos_x, 320);
  137.  
  138.         window.clear(Color::Black);
  139.         window.setView(view1);
  140.         niebo.setPosition(rect1_pos_x - win_width/2, 0);
  141.         window.draw(niebo);
  142.         for(int x = -1; x < 2; x++) {
  143.             pagorek.setPosition(rect1_pos_x * 0.6 + 640 * x, 0);
  144.             window.draw(pagorek);
  145.             continue;
  146.         }
  147.  
  148.         for(int x = 0; x < trawa_count; x++) {
  149.             trawa.setPosition(trawa_pos_x[x],trawa_pos_y[x]);
  150.             window.draw(trawa);
  151.         }
  152.         rect1.setPosition(rect1_pos_x, rect1_pos_y);
  153.         window.draw(rect1);
  154.         window.display();
  155.  
  156.     }
  157.  
  158.     return 0;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment