Advertisement
PrincessFumi

Untitled

Jan 6th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. #include <SFML/Window.hpp>
  2. #include <SFML/Graphics.hpp>
  3. #include<stdio.h>
  4. #include "Domek.h"
  5. #include<stdlib.h>
  6. #include<iostream>
  7. #include "wspolrzedne.h"
  8. #include "Pionek.h"
  9. #include "klikniecie.h"
  10. #include "Kostka.h"
  11.  
  12.  
  13. class Gracz{
  14.  
  15.  
  16.  
  17.  
  18. };
  19.  
  20.  
  21. using namespace std;
  22.  
  23. int na_jakie_pole_przejdzie(Pionek* pionek, int kostka)
  24. {
  25.  
  26. int przyszla_pozycja;
  27. int aktualna_pozycja;
  28. int start, roznica, start_bazy;
  29. przyszla_pozycja = pionek->pobierz_polozenie() + kostka;
  30. aktualna_pozycja = pionek->pobierz_polozenie();
  31. if(pionek->kolor == czerwony)
  32. {
  33. start = 20;
  34. roznica = 28;
  35. start_bazy = 48;
  36. }
  37. else if(pionek->kolor == niebieski)
  38. {
  39. start = 30;
  40. roznica = 15;
  41. start_bazy = 44;
  42.  
  43. }
  44. else if(pionek->kolor == zielony)
  45. {
  46. start = 10;
  47. roznica = 43;
  48. start_bazy = 52;
  49.  
  50. }
  51. else if(pionek->kolor == zolty)
  52. {
  53. start = 40;
  54. roznica = 0;
  55. start_bazy = 40;
  56.  
  57. }
  58.  
  59. if (przyszla_pozycja >= start && aktualna_pozycja<start)
  60. {
  61. if(przyszla_pozycja>=start && przyszla_pozycja<=(start+3))
  62. {
  63. return przyszla_pozycja + roznica ;
  64. }
  65. else
  66. return aktualna_pozycja;
  67. }
  68.  
  69. if(aktualna_pozycja>=start_bazy && aktualna_pozycja<=(start_bazy+3))
  70. {
  71. if(przyszla_pozycja>(start_bazy+3))
  72. return aktualna_pozycja;
  73.  
  74. else
  75. return przyszla_pozycja;
  76. }
  77.  
  78.  
  79. return przyszla_pozycja %40;
  80.  
  81. }
  82.  
  83. Pionek* spytaj_o_pole(Pionek* tablica[], int nr_pola)
  84. {
  85. int i;
  86. for(i=0; i<liczbaPionkow; i++)
  87. {
  88. if(tablica[i]->pobierz_polozenie() == nr_pola)
  89. return tablica[i];
  90. }
  91. return NULL;
  92. }
  93.  
  94. void ruch_pionka(Pionek *pionek,Pionek* tablica[], int kostka) //int kostka,
  95. {
  96. int m;
  97.  
  98. if(pionek->w_grze == false)
  99. {
  100. pionek->w_grze = true;
  101. switch( pionek->kolor)
  102. {
  103. case czerwony:
  104. pionek->ustaw_polozenie(20);
  105. break;
  106. case zielony:
  107. pionek->ustaw_polozenie(10);
  108. break;
  109. case zolty:
  110. pionek->ustaw_polozenie(0);
  111. break;
  112. case niebieski:
  113. pionek->ustaw_polozenie(30);
  114. break;
  115. }
  116. }
  117. else
  118. {
  119. //przesuwanie pionka
  120.  
  121. Pionek *p;
  122. m = na_jakie_pole_przejdzie(pionek,kostka);
  123. p = spytaj_o_pole(tablica,m);
  124.  
  125. if(p!= NULL)
  126. {
  127. if(pionek->kolor != p->kolor)
  128. {
  129. p->wroc_do_domku();
  130. }
  131. else
  132. return;
  133. }
  134. pionek->ustaw_polozenie(m);
  135. }
  136. }
  137. kolor_pionka zwroc_kolor_nastepnego(kolor_pionka a)
  138. {
  139. if(a==zolty)
  140. return zielony;
  141. if(a== zielony)
  142. return czerwony;
  143. if(a==czerwony)
  144. return niebieski;
  145. if(a==niebieski)
  146. return zolty;
  147.  
  148. }
  149.  
  150. int main()
  151. {
  152. int i;
  153. srand( time( NULL ) );
  154. int kostka;
  155. bool czy_losowac=true;
  156. kolor_pionka aktualny;
  157. aktualny = zielony;
  158.  
  159.  
  160.  
  161. sf::RenderWindow oknoAplikacji( sf::VideoMode( 600, 600, 32 ), "Chinczyk" );
  162.  
  163. sf::Texture plansza;
  164. plansza.loadFromFile( "chinczyk.png" );
  165. sf::Sprite obrazek;
  166. obrazek.setTexture( plansza );
  167. Kostka kosteczka(&oknoAplikacji);
  168.  
  169. //postawienie pionków;
  170.  
  171. Pionek* Pionki[liczbaPionkow];
  172.  
  173. Domek czerwony_domek(490,490, "czerwony.png", czerwony);
  174. czerwony_domek.dodaj_pionka(&Pionki[0]);
  175.  
  176. Domek niebieski_domek(0,490, "niebieski.png", niebieski);
  177. niebieski_domek.dodaj_pionka(&Pionki[4]);
  178.  
  179. Domek zielony_domek (490, 0, "zielony.png", zielony);
  180. zielony_domek.dodaj_pionka(&Pionki[8]);
  181.  
  182. Domek zolty_domek (0, 0, "zolty.png", zolty);
  183. zolty_domek.dodaj_pionka(&Pionki[12]);
  184.  
  185.  
  186. while( oknoAplikacji.isOpen() )
  187. {
  188. sf::Event zdarzenie;
  189. while( oknoAplikacji.pollEvent( zdarzenie ) )
  190. {
  191. if( zdarzenie.type == sf::Event::Closed )
  192. oknoAplikacji.close();
  193.  
  194. if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
  195. oknoAplikacji.close();
  196.  
  197. if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Middle )
  198. oknoAplikacji.close();
  199.  
  200. if(zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button== sf::Mouse::Left)
  201. {
  202.  
  203. Pionek *pionek = zwroc_kliknietego_pionka(sf::Mouse::getPosition(oknoAplikacji), Pionki);
  204. if(pionek != NULL && pionek->kolor==aktualny)
  205. {
  206.  
  207. ruch_pionka(pionek,Pionki,kostka);
  208. czy_losowac=true;
  209. aktualny=zwroc_kolor_nastepnego(pionek->kolor);
  210.  
  211.  
  212. }
  213. }
  214. }
  215.  
  216. oknoAplikacji.clear( sf::Color::Black );
  217. oknoAplikacji.draw(obrazek);
  218. int i;
  219. for(i=0; i<liczbaPionkow; i++)
  220. {
  221. oknoAplikacji.draw(*(Pionki[i]->zwracanie_sprite()));
  222. }
  223.  
  224. if(czy_losowac)
  225. {
  226. kostka = rzut_kostka();
  227. czy_losowac = false;
  228. }
  229.  
  230. kosteczka.wyswietl_kostke(kostka,aktualny);
  231. oknoAplikacji.display();
  232. }
  233. for(i=0; i<liczbaPionkow; i++)
  234. {
  235. delete(Pionki[i]);
  236. }
  237. return 0;
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement