Advertisement
Guest User

Untitled

a guest
May 27th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1.  
  2.  
  3. #include <SFML/Graphics.hpp>
  4. #include <vector>
  5. #include <iostream>
  6. #include <Windows.h>
  7. #include <string>
  8. #include <algorithm>
  9. #include <list>
  10.  
  11. bool czy_koniec_gry = false;
  12. int tajmer1 = 0;
  13. int mocbomby_gracza1 = 1;
  14. int mocbomby_gracza2 = 1;
  15. bool czy_bomba_1 = false;
  16. bool czy_wybuch_1 = false;
  17. int liczbabomb_gracz1 = 1;
  18. int liczbabomb_gracza2 = 1;
  19. std::vector<sf::Sprite> czescimuru;
  20. std::list<sf::Sprite> skrzynki;
  21. std::vector<sf::Sprite> bomby;
  22. sf::Sprite bomba;
  23.  
  24.  
  25. sf::Sprite gracz2;
  26. sf::Sprite gracz1;
  27. sf::Sprite PrzeszkodaMur;
  28. sf::Sprite Tlo;
  29.  
  30. sf::Sprite PrzeszkodaSkrzynka;
  31.  
  32.  
  33. sf::Texture przeszkoda1tekstura;
  34. sf::Texture tlotekstura;
  35. sf::Texture gracztekstura;
  36. sf::Texture teksturaskrzynki;
  37. sf::Texture teksturabomby;
  38. bool kolizja(sf::Sprite &przeszkoda, sf::Sprite &gracz)
  39. {
  40.  
  41. sf::FloatRect obiekt1(przeszkoda.getGlobalBounds());
  42. sf::FloatRect obiekt2(gracz.getGlobalBounds());
  43.  
  44. if (obiekt1.intersects(obiekt2))
  45. {
  46. return true;
  47. }
  48. else return false;
  49. }
  50.  
  51. bool losowanie()
  52. {
  53. std::vector<int>vectorliczb = { 2,4,8,3 };
  54. int a = rand() % 4;
  55. if (vectorliczb[a] % 2 == 0)return true;
  56. else return false;
  57. }
  58. void timer()
  59. {
  60. if (czy_bomba_1 == true)
  61. {
  62. czy_wybuch_1 = false;
  63. tajmer1++;
  64. if (tajmer1 == 180)
  65. {
  66. tajmer1 = 0;
  67. czy_bomba_1 = false;
  68. czy_wybuch_1 = true;
  69. }
  70.  
  71. }
  72.  
  73. }
  74. void ustaw_tex()
  75. {
  76. przeszkoda1tekstura.loadFromFile("kamien.png");
  77. tlotekstura.loadFromFile("mapka.png");
  78. gracztekstura.loadFromFile("pacman.png");
  79. teksturaskrzynki.loadFromFile("teksturazolta.jpg");
  80. teksturabomby.loadFromFile("bombav1.png");//bombav1.png lub bombav2.bmp
  81.  
  82.  
  83.  
  84. Tlo.setTexture(tlotekstura);
  85. gracz1.setTexture(gracztekstura);
  86. PrzeszkodaSkrzynka.setTexture(teksturaskrzynki);
  87. bomba.setTexture(teksturabomby);
  88.  
  89. gracz1.setScale(0.05f, 0.05f);
  90. gracz2.setTexture(gracztekstura);
  91. gracz2.setScale(0.05f, 0.05f);
  92. //PrzeszkodaMur.setScale(1.0f, 1.0f);
  93. //PrzeszkodaSkrzynka.setScale(0.25f, 0.25f);
  94. bomba.setScale(0.15f, 0.15f);
  95.  
  96. int a = 50, b = 50;
  97. //PrzeszkodaSkrzynka.setOrigin(a / 2, b / 2);
  98. // PrzeszkodaMur.setOrigin(a / 2, b / 2);
  99. PrzeszkodaSkrzynka.setTextureRect(sf::IntRect(10, 10, a, b));
  100. PrzeszkodaMur.setTextureRect(sf::IntRect(10, 10, a, b));
  101.  
  102. gracz1.setPosition(60, 50);
  103. gracz2.setPosition(675,565);
  104.  
  105. Tlo.setTextureRect(sf::IntRect(0, 0, 765, 653));
  106.  
  107. }
  108. void wybuch_bomby()
  109. {
  110. if (czy_wybuch_1)
  111. {
  112.  
  113. bomby[0].setScale(0.3f,0.3f);
  114.  
  115. for (int i =0; i <bomby.size(); i++)
  116. {
  117.  
  118. if (kolizja(gracz1, bomby[i])||kolizja(gracz2, bomby[i]))
  119. {
  120. std::cout << "Koniec Gry!";
  121. czy_koniec_gry = true;
  122. }
  123. for (auto j = skrzynki.begin(); j != skrzynki.end(); )
  124. {
  125. if (kolizja((*j), bomby[i]))
  126. {
  127. j=skrzynki.erase(j);
  128.  
  129. }
  130. else
  131. {
  132. j++;
  133. }
  134. }
  135. }
  136. bomby.clear();
  137. czy_wybuch_1 = false;
  138. liczbabomb_gracz1++;
  139. }
  140. }
  141. void dodaj_sciany()
  142. {
  143. for (int i = 0; i < 3; i++)
  144. {
  145. PrzeszkodaSkrzynka.setPosition(410 +i*102.5, 45 );
  146. skrzynki.push_back(PrzeszkodaSkrzynka);
  147. }
  148. for (int i = 0; i < 3; i++)
  149. {
  150. PrzeszkodaSkrzynka.setPosition(102.5 + i*102.5, 557.5);
  151. skrzynki.push_back(PrzeszkodaSkrzynka);
  152. }
  153. for (int i = 0; i < 5; i++)
  154. {
  155. PrzeszkodaSkrzynka.setPosition(52.5 , (97.5 + i*102.5));
  156. skrzynki.push_back(PrzeszkodaSkrzynka);
  157. }
  158. for (int i = 0; i < 6; i++)
  159. {
  160. for (int j = 0; j < 5; j++)
  161. {
  162. PrzeszkodaSkrzynka.setPosition((152.5 + i*102.5), (97.5 + j*102.5));
  163. skrzynki.push_back(PrzeszkodaSkrzynka);
  164. PrzeszkodaMur.setPosition((102.5+i*102.5),(97.5+j*102.5));
  165.  
  166. czescimuru.push_back(PrzeszkodaMur);
  167. }
  168. }
  169.  
  170. }
  171.  
  172.  
  173. void Ruch()
  174. {
  175. if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  176. {
  177.  
  178. if (gracz1.getPosition().x < 675)
  179. {
  180. gracz1.move(5, 0);
  181. }
  182. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  183. {
  184. if (kolizja(*itr, gracz1) == true)gracz1.move(-5, 0);
  185.  
  186. }
  187. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  188. {
  189. if (kolizja(*itr, gracz1) == true)gracz1.move(-5, 0);
  190.  
  191. }
  192.  
  193. }
  194.  
  195. if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  196. {
  197. if (gracz1.getPosition().x >60)
  198. {
  199. gracz1.move(-5, 0);
  200. }
  201. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  202. {
  203. if (kolizja(*itr, gracz1) == true)gracz1.move(5, 0);
  204. }
  205. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  206. {
  207. if (kolizja(*itr, gracz1) == true)gracz1.move(5, 0);
  208.  
  209. }
  210.  
  211. }
  212.  
  213. if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  214. {
  215. if (gracz1.getPosition().y >55)
  216. {
  217. gracz1.move(0, -5);
  218. }
  219. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  220. {
  221. if (kolizja(*itr, gracz1) == true)gracz1.move(0, 5);
  222. }
  223. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  224. {
  225. if (kolizja(*itr, gracz1) == true)gracz1.move(0, 5);
  226.  
  227. }
  228. }
  229.  
  230. if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
  231. {
  232.  
  233. if (gracz1.getPosition().y <570)
  234. {
  235. gracz1.move(0, 5);
  236. }
  237. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  238. {
  239. if (kolizja(*itr, gracz1) == true)gracz1.move(0, -5);
  240. }
  241. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  242. {
  243. if (kolizja(*itr, gracz1) == true)gracz1.move(0, -5);
  244.  
  245. }
  246.  
  247. }
  248.  
  249. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
  250. {
  251.  
  252. if (gracz2.getPosition().x < 675)
  253. {
  254. gracz2.move(5, 0);
  255. }
  256. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  257. {
  258. if (kolizja(*itr, gracz2) == true)gracz2.move(-5, 0);
  259.  
  260. }
  261. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  262. {
  263. if (kolizja(*itr, gracz2) == true)gracz2.move(-5, 0);
  264.  
  265. }
  266.  
  267. }
  268.  
  269. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
  270. {
  271. if (gracz2.getPosition().x >60)
  272. {
  273. gracz2.move(-5, 0);
  274. }
  275. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  276. {
  277. if (kolizja(*itr, gracz2) == true)gracz2.move(5, 0);
  278. }
  279. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  280. {
  281. if (kolizja(*itr, gracz2) == true)gracz2.move(5, 0);
  282.  
  283. }
  284.  
  285. }
  286.  
  287. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
  288. {
  289. if (gracz2.getPosition().y >55)
  290. {
  291. gracz2.move(0, -5);
  292. }
  293. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  294. {
  295. if (kolizja(*itr, gracz2) == true)gracz2.move(0, 5);
  296. }
  297. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  298. {
  299. if (kolizja(*itr, gracz2) == true)gracz2.move(0, 5);
  300.  
  301. }
  302. }
  303.  
  304. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
  305. {
  306.  
  307. if (gracz2.getPosition().y <570)
  308. {
  309. gracz2.move(0, 5);
  310. }
  311. for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
  312. {
  313. if (kolizja(*itr, gracz2) == true)gracz2.move(0, -5);
  314. }
  315. for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
  316. {
  317. if (kolizja(*itr, gracz2) == true)gracz2.move(0, -5);
  318.  
  319. }
  320.  
  321. }
  322. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
  323. {
  324. if (liczbabomb_gracz1 > 0)
  325. {
  326. bomba.setPosition(gracz1.getPosition());
  327.  
  328. bomby.push_back(bomba);
  329. liczbabomb_gracz1 -= 1;
  330. czy_bomba_1 = true;
  331. }
  332.  
  333. }
  334. if (sf::Keyboard::isKeyPressed(sf::Keyboard::Slash))
  335. {
  336. if (liczbabomb_gracza2 > 0)
  337. {
  338. bomba.setPosition(gracz2.getPosition());
  339. bomby.push_back(bomba);
  340. liczbabomb_gracza2 -= 1;
  341. }
  342.  
  343. }
  344. }
  345.  
  346.  
  347.  
  348.  
  349. int main()
  350. {
  351. sf::RenderWindow window(sf::VideoMode(765, 653), "SFML works!");
  352.  
  353. window.setFramerateLimit(60);
  354.  
  355.  
  356. ustaw_tex();
  357. //tekstury
  358. dodaj_sciany();
  359.  
  360.  
  361. while (window.isOpen())
  362. {
  363. sf::Event event;
  364. while (window.pollEvent(event))
  365. {
  366.  
  367.  
  368. if (event.type == sf::Event::Closed)
  369. window.close();
  370. }
  371.  
  372. if (!czy_koniec_gry)
  373. {
  374. timer();
  375.  
  376. wybuch_bomby();
  377.  
  378. Ruch();
  379.  
  380. window.clear();
  381.  
  382. window.draw(Tlo);
  383.  
  384. for (std::size_t i = 0; i < czescimuru.size(); i++)
  385. {
  386. window.draw(czescimuru[i]);
  387. }
  388. for (auto j = skrzynki.begin(); j != skrzynki.end(); j++)
  389. {
  390. window.draw((*j));
  391. }
  392.  
  393. for (std::size_t k = 0; k < bomby.size(); k++)
  394. {
  395. window.draw(bomby[k]);
  396. }
  397. window.draw(gracz1);
  398. window.draw(gracz2);
  399. }
  400. else
  401. {
  402. std::getchar();
  403. window.close();
  404. }
  405.  
  406. window.display();
  407.  
  408. }
  409.  
  410.  
  411.  
  412. return 0;
  413. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement