Advertisement
PrincessFumi

Untitled

Jan 9th, 2015
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.46 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. class Gracz
  13. {
  14.  
  15. public:
  16. kolor_pionka kolor;
  17. Gracz(kolor_pionka kolor)
  18. {
  19. this->kolor = kolor;
  20. }
  21.  
  22.  
  23. };
  24.  
  25. Kostka::Kostka(sf::RenderWindow *oknoAplikacji)
  26. {
  27.  
  28.  
  29. this->oknoAplikacji= oknoAplikacji;
  30. cube[0].loadFromFile("kostka1.png");
  31. cube[1].loadFromFile("kostka2.png");
  32. cube[2].loadFromFile("kostka3.png");
  33. cube[3].loadFromFile("kostka4.png");
  34. cube[4].loadFromFile("kostka5.png");
  35. cube[5].loadFromFile("kostka6.png");
  36. int i;
  37. for(i=0; i<6; i++)
  38. {
  39. kostki[i].setTexture(cube[i]);
  40. }
  41.  
  42. }
  43.  
  44. void Kostka:: wyswietl_kostke(int liczba_oczek, kolor_pionka a)
  45. {
  46. if(liczba_oczek>0)
  47. {
  48. oknoAplikacji->draw(kostki[liczba_oczek-1]);
  49. if(a==czerwony)
  50. {
  51. kostki[liczba_oczek-1].setPosition(430,500);
  52. }
  53. if(a==niebieski)
  54. {
  55. kostki[liczba_oczek-1].setPosition(130,500);
  56. }
  57.  
  58. if(a==zolty)
  59. {
  60. kostki[liczba_oczek-1].setPosition(130,10);
  61. }
  62. if(a==zielony)
  63. {
  64. kostki[liczba_oczek-1].setPosition(430,10);
  65. }
  66. }
  67. }
  68.  
  69. int rzut_kostka()
  70. {
  71. int kostka = (rand()%6) + 1;
  72. return kostka;
  73.  
  74. }
  75. bool czy_w_domku(Pionek* tablica[], kolor_pionka kolorek)
  76. {
  77. int i;
  78.  
  79. for(i=0; i<=liczbaPionkow; i++)
  80. {
  81. if( kolorek == tablica[i]->kolor && tablica[i]->w_grze==true)
  82. {
  83. return false;
  84. }
  85. }
  86. return true;
  87. }
  88.  
  89. using namespace std;
  90.  
  91. int na_jakie_pole_przejdzie(Pionek* pionek, int kostka)
  92. {
  93.  
  94. int przyszla_pozycja;
  95. int aktualna_pozycja;
  96. int start, roznica, start_bazy;
  97. przyszla_pozycja = pionek->pobierz_polozenie() + kostka;
  98. aktualna_pozycja = pionek->pobierz_polozenie();
  99. if(pionek->kolor == czerwony)
  100. {
  101. start = 20;
  102. roznica = 28;
  103. start_bazy = 48;
  104. }
  105. else if(pionek->kolor == niebieski)
  106. {
  107. start = 30;
  108. roznica = 15;
  109. start_bazy = 44;
  110.  
  111. }
  112. else if(pionek->kolor == zielony)
  113. {
  114. start = 10;
  115. roznica = 43;
  116. start_bazy = 52;
  117.  
  118. }
  119. else if(pionek->kolor == zolty)
  120. {
  121. start = 40;
  122. roznica = 0;
  123. start_bazy = 40;
  124.  
  125. }
  126.  
  127. if (przyszla_pozycja >= start && aktualna_pozycja<start)
  128. {
  129. if(przyszla_pozycja>=start && przyszla_pozycja<=(start+3))
  130. {
  131. return przyszla_pozycja + roznica ;
  132. }
  133. else
  134. return aktualna_pozycja;
  135. }
  136.  
  137. if(aktualna_pozycja>=start_bazy && aktualna_pozycja<=(start_bazy+3))
  138. {
  139. if(przyszla_pozycja>(start_bazy+3))
  140. return aktualna_pozycja;
  141.  
  142. else
  143. return przyszla_pozycja;
  144. }
  145.  
  146.  
  147. return przyszla_pozycja %40;
  148.  
  149. }
  150.  
  151. Pionek* spytaj_o_pole(Pionek* tablica[], int nr_pola)
  152. {
  153. int i;
  154. for(i=0; i<liczbaPionkow; i++)
  155. {
  156. if(tablica[i]->pobierz_polozenie() == nr_pola)
  157. return tablica[i];
  158. }
  159. return NULL;
  160. }
  161.  
  162.  
  163. void na_start(Pionek *pionek,Pionek* tablica[], int kostka)
  164. {
  165.  
  166. if(pionek->w_grze == false)
  167. {
  168. pionek->w_grze = true;
  169. Pionek *p;
  170. int start;
  171.  
  172. switch( pionek->kolor)
  173. {
  174. case czerwony:
  175. start=20;
  176. pionek->ustaw_polozenie(start);
  177. break;
  178. case zielony:
  179. start = 10;
  180. pionek->ustaw_polozenie(start);
  181. break;
  182. case zolty:
  183. pionek->w_grze = true;
  184. start=0;
  185. pionek->ustaw_polozenie(start);
  186. break;
  187. case niebieski:
  188. start=30;
  189. pionek->ustaw_polozenie(start);
  190. break;
  191. }
  192. }
  193. }
  194.  
  195.  
  196. void ruch_pionka(Pionek *pionek,Pionek* tablica[], int kostka)
  197. {
  198. int m;
  199. Pionek *p;
  200. m = na_jakie_pole_przejdzie(pionek,kostka);
  201. p = spytaj_o_pole(tablica,m);
  202.  
  203.  
  204.  
  205. if(p!= NULL)
  206. {
  207. if(pionek->kolor != p->kolor)
  208. {
  209. p->wroc_do_domku();
  210. }
  211. else
  212. return;
  213. }
  214. pionek->ustaw_polozenie(m);
  215. }
  216.  
  217. Gracz red(czerwony);
  218. Gracz blue(niebieski);
  219. Gracz green(zielony);
  220. Gracz yellow(zolty);
  221.  
  222.  
  223. Gracz* zwroc_kolor_nastepnego(kolor_pionka a)
  224. {
  225. if(a==zolty)
  226. return &green;
  227. if(a== zielony)
  228. return &red;
  229. if(a==czerwony)
  230. return &blue;
  231. if(a==niebieski)
  232. return &yellow;
  233.  
  234. }
  235.  
  236.  
  237. int main()
  238. {
  239. int i;
  240. srand( time( NULL ) );
  241. int kostka;
  242. bool czy_losowac=true;
  243. Gracz* aktualny;
  244. bool czy_poczatek;
  245.  
  246.  
  247. sf::RenderWindow oknoAplikacji( sf::VideoMode( 600, 600, 32 ), "Chinczyk" );
  248.  
  249. sf::Texture plansza;
  250. plansza.loadFromFile( "chinczyk.png" );
  251. sf::Sprite obrazek;
  252. obrazek.setTexture( plansza );
  253. Kostka kosteczka(&oknoAplikacji);
  254.  
  255. //postawienie pionków;
  256.  
  257. Pionek* Pionki[liczbaPionkow];
  258.  
  259. Domek czerwony_domek(490,490, "czerwony.png", czerwony);
  260. czerwony_domek.dodaj_pionka(&Pionki[0]);
  261.  
  262. Domek niebieski_domek(0,490, "niebieski.png", niebieski);
  263. niebieski_domek.dodaj_pionka(&Pionki[4]);
  264.  
  265. Domek zielony_domek (490, 0, "zielony.png", zielony);
  266. zielony_domek.dodaj_pionka(&Pionki[8]);
  267.  
  268. Domek zolty_domek (0, 0, "zolty.png", zolty);
  269. zolty_domek.dodaj_pionka(&Pionki[12]);
  270. //od tych zaczynamy:
  271. aktualny = &yellow;
  272.  
  273.  
  274. while( oknoAplikacji.isOpen() )
  275. {
  276. sf::Event zdarzenie;
  277. while( oknoAplikacji.pollEvent( zdarzenie ) )
  278. {
  279. if( zdarzenie.type == sf::Event::Closed )
  280. oknoAplikacji.close();
  281.  
  282. if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
  283. oknoAplikacji.close();
  284.  
  285. if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Middle )
  286. oknoAplikacji.close();
  287.  
  288. if(zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button== sf::Mouse::Left)
  289.  
  290. {
  291. Pionek *pionek = zwroc_kliknietego_pionka(sf::Mouse::getPosition(oknoAplikacji), Pionki);
  292. if(pionek != NULL && pionek->kolor==aktualny->kolor)
  293. {
  294. czy_losowac=true;
  295. czy_poczatek = czy_w_domku(Pionki,aktualny->kolor);
  296. if(czy_poczatek==true){
  297. if(pionek->w_grze==false)
  298. {
  299. na_start(pionek,Pionki,kostka);
  300. }}
  301. else
  302. ruch_pionka(pionek,Pionki,kostka);
  303. aktualny=zwroc_kolor_nastepnego(pionek->kolor);
  304. }
  305. }
  306. }
  307.  
  308. oknoAplikacji.clear( sf::Color::Black );
  309. oknoAplikacji.draw(obrazek);
  310. for(i=0; i<liczbaPionkow; i++)
  311. {
  312. oknoAplikacji.draw(*(Pionki[i]->zwracanie_sprite()));
  313. }
  314.  
  315. if(czy_losowac)
  316. {
  317. kostka = rzut_kostka();
  318. czy_losowac = false;
  319. }
  320.  
  321. kosteczka.wyswietl_kostke(kostka,aktualny->kolor);
  322. oknoAplikacji.display();
  323.  
  324. }
  325. for(i=0; i<liczbaPionkow; i++)
  326. {
  327. delete(Pionki[i]);
  328. }
  329. return 0;
  330. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement