Advertisement
Guest User

SFML kolizje

a guest
Nov 21st, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. #include <vector>
  2. #include <SFML/Graphics.hpp>
  3. #include <iostream>
  4. int pos_x,pos_y;
  5. bool zakrent=true;
  6. int ilosc_tab=100;
  7. int wielekosc_pierwszej_lini=10;
  8. int resetx=0;
  9. bool kolizja_prawa,kolizja_lewa,kolizja_gorna,kolizja_dolna;
  10. int main()
  11. {
  12.  
  13. sf::RenderWindow window(sf::VideoMode(1920, 1080, 32), "okno");
  14. window.setFramerateLimit(60);
  15.  
  16. //Tlo
  17. sf::RectangleShape tlo(sf::Vector2f(1920,1080));
  18. tlo.setFillColor(sf::Color::Blue);
  19.  
  20. //Linie
  21. sf::RectangleShape linia_gora(sf::Vector2f(1920,1));
  22. linia_gora.setFillColor(sf::Color::Red);
  23.  
  24. sf::RectangleShape linia_dol(sf::Vector2f(1920,1));
  25. linia_dol.setFillColor(sf::Color::Red);
  26. linia_dol.setPosition(0,1080);
  27.  
  28. sf::RectangleShape linia_prawo(sf::Vector2f(1,1080));
  29. linia_prawo.setFillColor(sf::Color::Red);
  30. linia_prawo.setPosition(1920,0);
  31.  
  32. sf::RectangleShape linia_lewo(sf::Vector2f(1,1080));
  33. linia_lewo.setFillColor(sf::Color::Red);
  34.  
  35. //Postać
  36. sf::RectangleShape postac(sf::Vector2f(50,50));
  37. postac.setFillColor(sf::Color::Red);
  38. postac.setOrigin(postac.getGlobalBounds().width/2 , postac.getGlobalBounds().height/2);
  39. postac.setPosition(960,540);
  40.  
  41. std::vector<sf::RectangleShape> squares(ilosc_tab, sf::RectangleShape(sf::Vector2f(20, 20)));
  42. sf::Vector2f startpos(400, 200);
  43. for (auto& square : squares)
  44. {
  45.  
  46. square.setOrigin(square.getGlobalBounds().width / 2, square.getGlobalBounds().height / 2);
  47. square.setFillColor(sf::Color::Green);
  48. square.setPosition(startpos);
  49.  
  50. resetx++;
  51.  
  52. if(resetx==wielekosc_pierwszej_lini)
  53. {
  54. zakrent=false;
  55. }
  56. else
  57. {
  58. zakrent=true;
  59. }
  60.  
  61. if(zakrent==true)
  62. {
  63. startpos.x+=30;
  64. }
  65. else
  66. {
  67. startpos.x=squares[0].getPosition().x;
  68. if(resetx==wielekosc_pierwszej_lini)
  69. {
  70. startpos.y+=30;
  71. resetx=0;
  72. }
  73. }
  74. }
  75.  
  76. while (window.isOpen())
  77. {
  78. //kolizje
  79. if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  80. {
  81. if(postac.getGlobalBounds().intersects(linia_gora.getGlobalBounds())||postac.getGlobalBounds().intersects(squares[i].getGlobalBounds()))
  82. {
  83. kolizja_gorna=true;
  84. std::cout<<"kolizja gorna!!"<<std::endl;
  85. }
  86.  
  87. else
  88. {
  89. kolizja_gorna=false;
  90. postac.move(0,-5);
  91. }
  92.  
  93. }
  94.  
  95. if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
  96. {
  97. if(postac.getGlobalBounds().intersects(linia_dol.getGlobalBounds())||postac.getGlobalBounds().intersects(squares[i].getGlobalBounds()))
  98. {
  99. kolizja_dolna=true;
  100. std::cout<<"kolizja dolna!!"<<std::endl;
  101. }
  102.  
  103. else
  104. {
  105. kolizja_dolna=false;
  106. postac.move(0,5);
  107. }
  108.  
  109. }
  110.  
  111. if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  112. {
  113. if(postac.getGlobalBounds().intersects(linia_lewo.getGlobalBounds())||postac.getGlobalBounds().intersects(squares[i].getGlobalBounds()))
  114. {
  115. kolizja_lewa=true;
  116. std::cout<<"kolizja prawa!!"<<std::endl;
  117. }
  118.  
  119. else
  120. {
  121. kolizja_lewa=false;
  122. postac.move(-5,0);
  123. }
  124. }
  125.  
  126. if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  127. {
  128. if(postac.getGlobalBounds().intersects(linia_prawo.getGlobalBounds())||postac.getGlobalBounds().intersects(squares[i].getGlobalBounds()))
  129. {
  130. kolizja_prawa=true;
  131. std::cout<<"kolizja lewa!!"<<std::endl;
  132. }
  133.  
  134. else
  135. {
  136. kolizja_prawa=false;
  137. postac.move(5,0);
  138. }
  139. }
  140.  
  141.  
  142. sf::Event event;
  143. while (window.pollEvent(event))
  144. {
  145. if (event.type == sf::Event::Closed)
  146. {
  147. window.close();
  148. }
  149. if (event.type == sf::Event::KeyPressed)
  150. {
  151. if (event.key.code == sf::Keyboard::Escape)
  152. {
  153. window.close();
  154. }
  155. }
  156. }
  157. window.clear(sf::Color::Black);
  158. window.draw(tlo);
  159. for (auto& square : squares)
  160. {
  161. window.draw(square);
  162. }
  163. window.draw(linia_dol);
  164. window.draw(linia_gora);
  165. window.draw(linia_prawo);
  166. window.draw(linia_lewo);
  167. window.draw(postac);
  168. window.display();
  169. }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement