Advertisement
Guest User

Definicje.cpp

a guest
May 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.99 KB | None | 0 0
  1. #include "pch.h"
  2. #include "Naglowki.h"
  3.  
  4.  
  5. Grafika::Grafika()
  6. {
  7. Vector2f pozycja_(0, 0);
  8. pozycja=pozycja_;
  9. }
  10.  
  11. void Grafika::rysuj(RenderWindow & okno) const
  12. {
  13. okno.draw(*this);
  14. }
  15.  
  16. Vector2f Grafika::zwroc_pozycje() const
  17. {
  18. return pozycja;
  19. }
  20.  
  21. void Grafika::aktualizuj_pozycje()
  22. {
  23. pozycja = this->getPosition(); // METODA KTORA AKTUALIZUJE POZYCJE OBIEKTOW
  24. }
  25.  
  26.  
  27.  
  28. Postac::Postac() : Grafika()
  29. {
  30. if (grafika[0].loadFromFile("postac_przod.png") != true)
  31. blad_wczytywania();
  32.  
  33. if (grafika[1].loadFromFile("postac_lewy.png") != true)
  34. blad_wczytywania();
  35.  
  36. if (grafika[2].loadFromFile("postac_prawy.png") != true)
  37. blad_wczytywania();
  38.  
  39. if (grafika[3].loadFromFile("postac_tyl.png") != true)
  40. blad_wczytywania();
  41.  
  42. this->setTexture(grafika[0]);
  43. }
  44.  
  45. void Postac::podmien_grafiki(int kierunek)
  46. {
  47. switch (kierunek)
  48. {
  49. case 0:
  50. {
  51. this->setTexture(grafika[0]);
  52. }
  53. break;
  54.  
  55. case 1:
  56. {
  57. this->setTexture(grafika[1]);
  58. }
  59. break;
  60.  
  61. case 2:
  62. {
  63. this->setTexture(grafika[2]);
  64. }
  65. break;
  66.  
  67. case 3:
  68. {
  69. this->setTexture(grafika[3]);
  70. }
  71. break;
  72. }
  73. }
  74.  
  75. void Postac::rusz(Vector2f przemieszczenie_)
  76. {
  77. this->move(przemieszczenie_);
  78. }
  79.  
  80.  
  81.  
  82.  
  83. Sciana::Sciana() : Grafika()
  84. {
  85. if (grafika.loadFromFile("sciana.png") != true)
  86. blad_wczytywania();
  87.  
  88. this->setTexture(grafika);
  89. }
  90.  
  91.  
  92.  
  93. Skrzynia::Skrzynia() : Grafika()
  94. {
  95. if (grafika[0].loadFromFile("skrzynia.png") != true)
  96. blad_wczytywania();
  97.  
  98. if (grafika[1].loadFromFile("wlozona_skrzynia.png") != true)
  99. blad_wczytywania();
  100.  
  101. this->setTexture(grafika[0]);
  102. }
  103.  
  104.  
  105. void Skrzynia::podmien_grafiki(int liczba)
  106. {
  107. switch (liczba)
  108. {
  109. case 0:
  110. {
  111. this->setTexture(grafika[0]);
  112. }
  113. break;
  114.  
  115. case 1:
  116. {
  117. this->setTexture(grafika[1]);
  118. }
  119. break;
  120. }
  121. }
  122.  
  123.  
  124. void Skrzynia::rusz(Vector2f przemieszczenie_)
  125. {
  126. this->move(przemieszczenie_);
  127. }
  128.  
  129.  
  130.  
  131.  
  132. Miejsca_na_skrzynie::Miejsca_na_skrzynie() : Grafika()
  133. {
  134. if (grafika.loadFromFile("miejsca_na_skrzynie.png") != true)
  135. blad_wczytywania();
  136.  
  137. this->setTexture(grafika);
  138. }
  139.  
  140.  
  141. Tlo::Tlo() : Grafika()
  142. {
  143. if (grafika.loadFromFile("tlo.png") != true)
  144. blad_wczytywania();
  145.  
  146. this->setTexture(grafika);
  147. }
  148.  
  149.  
  150.  
  151. //-------------------------------------------------------------------------------
  152.  
  153. void ustaw(Grafika* wskaznik[169])
  154. {
  155. //USTAWIANIE TLA
  156. Tlo *tlo[100];
  157. for (int i = 0; i < 10; ++i)
  158. {
  159. for (int j = 0; j < 10; ++j)
  160. {
  161. tlo[i * 10 + j] = dynamic_cast <Tlo*> (wskaznik[i * 10 + j]);
  162. tlo[i * 10 + j]->setPosition((64 * (i + 1)) - 64, (64 * (j + 1)) - 64);
  163. }
  164. }
  165.  
  166. //USTAWIENIE SCIAN
  167. Sciana *sciana[60];
  168. for (int i = 0; i < 60; ++i)
  169. sciana[i] = dynamic_cast <Sciana*> (wskaznik[100 + i]);
  170.  
  171. int j = 0;
  172. for (int i = 0; i < 10; ++i)
  173. {
  174. sciana[i]->setPosition(j, 0);
  175. j += 64;
  176. }
  177.  
  178. j = 64;
  179. for (int i = 10; i < 19; ++i)
  180. {
  181. sciana[i]->setPosition(0, j);
  182. j += 64;
  183. }
  184.  
  185. j = 64;
  186. for (int i = 19; i < 27; ++i)
  187. {
  188. sciana[i]->setPosition(576, j);
  189. j += 64;
  190. }
  191.  
  192. j = 0;
  193. for (int i = 27; i < 37; ++i)
  194. {
  195. sciana[i]->setPosition(j, 576);
  196. j += 64;
  197. }
  198.  
  199. //USTAWIENIE POSTACI
  200. wskaznik[168]->setPosition(192, 128);
  201. }
  202.  
  203. void sprawdz_kolizje_rusz(Grafika* wskaznik[169], int liczba)
  204. {
  205.  
  206. Skrzynia *skrzynia[4];
  207. Postac *postac;
  208. Sciana *sciana[60];
  209. for (int i = 0; i < 4; ++i)
  210. {
  211. skrzynia[i] = dynamic_cast <Skrzynia*> (wskaznik[160 + i]);
  212. skrzynia[i]->aktualizuj_pozycje();
  213. }
  214.  
  215. for (int i = 0; i < 60; ++i)
  216. {
  217. sciana[i] = dynamic_cast <Sciana*> (wskaznik[100 + i]);
  218. sciana[i]->aktualizuj_pozycje();
  219. }
  220.  
  221. postac = dynamic_cast <Postac*> (wskaznik[168]);
  222. postac->aktualizuj_pozycje();
  223.  
  224.  
  225. Vector2f przemieszczenie(0, 0), pion(0, 64), poziom(64, 0);
  226.  
  227. if (liczba == 1 || liczba == 2)
  228. {
  229. przemieszczenie = poziom;
  230. if (liczba == 1)
  231. przemieszczenie.x *= -1;
  232. }
  233.  
  234. else if (liczba == 3 || liczba == 4)
  235. {
  236. przemieszczenie = pion;
  237. if (liczba == 3)
  238. przemieszczenie.y *= -1;
  239. }
  240.  
  241. // SPRAWDZANIE CZY POSTAC JESLI SIE RUSZY NIE BEDZIE KOLIDOWAC ZE SCIANA
  242. int licznik_sciana = 0;
  243. for (int i = 0; i < 60; ++i)
  244. {
  245. if (postac->zwroc_pozycje() != sciana[i]->zwroc_pozycje() - przemieszczenie)
  246. ++licznik_sciana;
  247. }
  248. if (licznik_sciana == 60)
  249. {
  250. //SPRAWDZANIE KOLIZJI POSTACI ZE SKRZYNKAMI
  251. int licznik_skrzyn = 4;
  252. int bufor;
  253. for (int i = 0; i < 4; ++i)
  254. {
  255. skrzynia[i]->aktualizuj_pozycje();
  256. if (postac->zwroc_pozycje() != skrzynia[i]->zwroc_pozycje() - przemieszczenie)
  257. --licznik_skrzyn;
  258. else bufor = i;
  259. }
  260. if (licznik_skrzyn == 0) postac->rusz(przemieszczenie);
  261. else
  262. {
  263. //WARUNEK JESLI POSTAC KOLIDUJE ZE SKRZYNIA
  264. licznik_sciana = 0, licznik_skrzyn = -1;
  265. for (int j = 0; j < 4; ++j)
  266. {
  267. if(skrzynia[bufor]->zwroc_pozycje() != skrzynia[j]->zwroc_pozycje()-przemieszczenie)
  268. ++licznik_skrzyn;
  269. }
  270.  
  271. for (int i = 0; i < 60; ++i)
  272. {
  273. if(skrzynia[bufor]->zwroc_pozycje() != sciana[i]->zwroc_pozycje()-przemieszczenie)
  274. ++licznik_sciana;
  275. }
  276. if (licznik_sciana == 60 && licznik_skrzyn == 3)
  277. {
  278. postac->rusz(przemieszczenie);
  279. skrzynia[bufor]->rusz(przemieszczenie);
  280. }
  281. }
  282. }
  283. }
  284.  
  285.  
  286. void ustaw_lev1(Grafika* wskaznik[169])
  287. {
  288. Sciana *sciana[60];
  289. Miejsca_na_skrzynie *miejsca_na_skrzynie[4];
  290. Skrzynia *skrzynia[4];
  291.  
  292. for (int i = 0; i < 60; ++i)
  293. sciana[i] = dynamic_cast <Sciana*> (wskaznik[100 + i]);
  294. for (int i = 0; i < 4; ++i)
  295. miejsca_na_skrzynie[i] = dynamic_cast <Miejsca_na_skrzynie*> (wskaznik[164 + i]);
  296. for (int i = 0; i < 4; ++i)
  297. skrzynia[i] = dynamic_cast <Skrzynia*> (wskaznik[160 + i]);
  298.  
  299. int j = 128;
  300. for (int i = 38; i < 43; ++i)
  301. {
  302. sciana[i]->setPosition(128, j);
  303. j += 64;
  304. }
  305.  
  306. for (int i = 43; i < 46; ++i)
  307. {
  308. sciana[i]->setPosition(256, j);
  309. j += 64;
  310. }
  311.  
  312. j = 192;
  313. for (int i = 46; i < 148; ++i)
  314. {
  315. sciana[i]->setPosition(448, j);
  316. j += 64;
  317. }
  318.  
  319. sciana[149]->setPosition(256, 192);
  320. sciana[50]->setPosition(320, 256);
  321.  
  322. j = 320;
  323. for (int i = 0; i < 4; ++i)
  324. {
  325. miejsca_na_skrzynie[i]->setPosition(j, 64);
  326. j += 64;
  327. }
  328.  
  329. j = 192;
  330. for (int i = 0; i < 4; ++i)
  331. {
  332. skrzynia[i]->setPosition(j, 320);
  333. j += 64;
  334. }
  335. }
  336.  
  337. void ustaw_lev2(Grafika* wskaznik[169])
  338. {
  339. Sciana *sciana[60];
  340. Miejsca_na_skrzynie *miejsca_na_skrzynie[4];
  341. Skrzynia *skrzynia[4];
  342.  
  343. for (int i = 0; i < 60; ++i)
  344. sciana[i] = dynamic_cast <Sciana*> (wskaznik[100 + i]);
  345. for (int i = 0; i < 4; ++i)
  346. miejsca_na_skrzynie[i] = dynamic_cast <Miejsca_na_skrzynie*> (wskaznik[164 + i]);
  347. for (int i = 0; i < 4; ++i)
  348. skrzynia[i] = dynamic_cast <Skrzynia*> (wskaznik[160 + i]);
  349.  
  350.  
  351. int j = 64;
  352. for (int i = 38; i < 45; ++i)
  353. {
  354. sciana[i]->setPosition(j + 128, 320);
  355. j += 64;
  356. }
  357.  
  358. j = 64;
  359. for (int i = 45; i < 48; ++i)
  360. {
  361. sciana[i]->setPosition(256, 128 + j);
  362. j += 64;
  363. }
  364.  
  365.  
  366. j = 448;
  367. for (int i = 0; i < 2; ++i)
  368. {
  369. miejsca_na_skrzynie[i]->setPosition(j, 64);
  370. j += 64;
  371. }
  372.  
  373. j = 448;
  374. for (int i = 2; i < 4; ++i)
  375. {
  376. miejsca_na_skrzynie[i]->setPosition(j, 128);
  377. j += 64;
  378. }
  379.  
  380. j = 192;
  381. for (int i = 0; i < 4; ++i)
  382. {
  383. skrzynia[i]->setPosition(j, 448);
  384. j += 64;
  385. }
  386. }
  387.  
  388. void ustaw_lev3(Grafika* wskaznik[169])
  389. {
  390. Sciana *sciana[60];
  391. Miejsca_na_skrzynie *miejsca_na_skrzynie[4];
  392. Skrzynia *skrzynia[4];
  393.  
  394. for (int i = 0; i < 60; ++i)
  395. sciana[i] = dynamic_cast <Sciana*> (wskaznik[100 + i]);
  396. for (int i = 0; i < 4; ++i)
  397. miejsca_na_skrzynie[i] = dynamic_cast <Miejsca_na_skrzynie*> (wskaznik[164 + i]);
  398. for (int i = 0; i < 4; ++i)
  399. skrzynia[i] = dynamic_cast <Skrzynia*> (wskaznik[160 + i]);
  400.  
  401. sciana[38]->setPosition(128, 192);
  402. sciana[39]->setPosition(128, 256);
  403. sciana[40]->setPosition(192, 256);
  404. sciana[41]->setPosition(256, 256);
  405. sciana[42]->setPosition(256, 192);
  406. sciana[43]->setPosition(128, 320);
  407. sciana[44]->setPosition(256, 320);
  408. sciana[45]->setPosition(512, 384);
  409. sciana[46]->setPosition(512, 512);
  410. sciana[47]->setPosition(448, 384);
  411. sciana[48]->setPosition(448, 512);
  412. sciana[49]->setPosition(64, 192);
  413.  
  414. miejsca_na_skrzynie[0]->setPosition(192, 192);
  415. miejsca_na_skrzynie[1]->setPosition(192, 320);
  416. miejsca_na_skrzynie[2]->setPosition(512, 448);
  417. miejsca_na_skrzynie[3]->setPosition(64, 128);
  418.  
  419. skrzynia[0]->setPosition(256, 128);
  420. skrzynia[1]->setPosition(256, 384);
  421. skrzynia[2]->setPosition(448, 320);
  422. skrzynia[3]->setPosition(320, 256);
  423. }
  424.  
  425. bool czy_wlozona(Grafika* wskaznik[169])
  426. {
  427. Skrzynia *skrzynia[4];
  428.  
  429. int licznik_wlozonych = 0;
  430. for (int i = 0; i < 4; ++i)
  431. {
  432. skrzynia[i] = dynamic_cast <Skrzynia*> (wskaznik[160 + i]);
  433. for (int j = 0; j < 4; j++)
  434. {
  435. if(skrzynia[i]->zwroc_pozycje()==wskaznik[164+j]->zwroc_pozycje())
  436. {
  437. ++licznik_wlozonych;
  438. skrzynia[i]->podmien_grafiki(1);
  439. }
  440. }
  441. }
  442. if (licznik_wlozonych == 4) return true;
  443. else return false;
  444. }
  445.  
  446. void rysuj_wszystko(Grafika* wskaznik[169], RenderWindow& window_, bool(czy_wlozona)(Grafika*[169]))
  447. {
  448. for (int i = 0; i < 169; ++i)
  449. wskaznik[i]->rysuj(window_);
  450. window_.display();
  451. if (czy_wlozona(wskaznik) == true) exit(2);
  452. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement