Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #include <iomanip>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. struct karta {
  9. int kolor;
  10. int figura;
  11. };
  12.  
  13. void przygotowanie(karta T[]);
  14. void generuj_talie(karta T[]);
  15. void tasuj_talie(karta T[]);
  16. void gra(karta talia[], int stawka, int &zetony);
  17. int obstawianie(int &zetony);
  18. void dodaj_karte_gracza(karta talia[], int &pkt_gracza, karta &karta_1);
  19. void dodaj_karte_krupiera(karta talia[], int &pkt_krupiera, karta &karta_1);
  20. void losuj_karte(karta &karta_1, karta talia[]);
  21. void rysuj_karte(karta karta_1, int split);
  22. void wyswietl_figure(karta karta_1);
  23. void rysuj_kolor(karta karta_1);
  24. void rysuj_interface(karta grajace[], int stawka, int zetony, int pkt_gracza, int pkt_gracza_2, int pkt_krupiera, int czyja_kolej, int split, karta grajace_split[]);
  25. void pisz_menu(int tura, int stawka, int zetony, karta grajace[]);
  26. void decyzja_1(karta grajace[], int &pkt_gracza, int &pkt_gracza_2, int &wybor, karta talia[], int &czyja_kolej, int &czyja_kolej_1, int &czyja_kolej_2, int &tura, int &i, int &zetony, int &stawka, int &split, karta grajace_split[]);
  27. int sprawdzenie(int pkt_gracza, int pkt_gracza_2, int split);
  28. void krupier(karta grajace[], int stawka, int zetony, int pkt_gracza, int pkt_gracza_2, int &pkt_krupiera, karta talia[], int czyja_kolej, int split, karta grajace_split[]);
  29. void podsumowanie(int &pkt_gracza, int &pkt_gracza_2, int &pkt_krupiera, int &zetony, int stawka, int &czyja_kolej, int &tura, karta grajace[], int &split, karta grajace_split[]);
  30. void rysuj_statystyki(int stawka, int zetony);
  31. int czy_nast_rozd(int &nast_rozd);
  32. void wartosci_kart(karta grajace[], karta grajace_split[], int &pkt_krupiera, int &pkt_gracza, karta talia[]);
  33. void podsumowanie_1(int &pkt_gracza, int &pkt_krupiera, int &zetony, int stawka);
  34.  
  35. //void split_funkcja(int &tura, int &pkt_gracza, int &pkt_krupiera, karta grajace[], int &wybor, karta talia[], int &stawka, int &zetony, int &czyja_kolej, int split);
  36.  
  37. int main()
  38. {
  39. srand(time(NULL));
  40.  
  41. int zetony = 100;
  42. int stawka = 0;
  43. int nast_rozd = 2;
  44. karta talia[156];
  45.  
  46. while (zetony > 0)
  47. {
  48. przygotowanie(talia);
  49. gra(talia, stawka, zetony);
  50. if (czy_nast_rozd(nast_rozd) == 2)
  51. break;
  52. }
  53.  
  54. system("pause");
  55. return 0;
  56. }
  57.  
  58. int czy_nast_rozd(int &nast_rozd)
  59. {
  60. cout << "Czy chcesz grac dalej?" << endl;
  61. cout << "1. Tak" << endl << "2. Nie" << endl;
  62. cin >> nast_rozd;
  63. return nast_rozd;
  64. }
  65.  
  66. void przygotowanie(karta talia[])
  67. {
  68. generuj_talie(talia);
  69. tasuj_talie(talia);
  70. }
  71.  
  72. void generuj_talie(karta T[])
  73. {
  74. int i = 1;
  75.  
  76. for (int talie = 0; talie < 3; talie++)
  77. for (int kolor = 1; kolor <= 4; kolor++)
  78. for (int figura = 2; figura <= 14; figura++)
  79. {
  80. T[i - 1].kolor = kolor;
  81. T[i - 1].figura = figura;
  82. i++;
  83. }
  84. }
  85.  
  86. void tasuj_talie(karta T[])
  87. {
  88. karta buf;
  89. for (int i = 0; i < 52; i++)
  90. {
  91. int m = rand() % 156;
  92. buf = T[i];
  93. T[i] = T[m];
  94. T[m] = buf;
  95. }
  96. }
  97.  
  98. void wartosci_kart(karta grajace[], karta grajace_split[], int &pkt_krupiera, int &pkt_gracza, karta talia[])
  99. {
  100. for (int i = 0; i < 20; i++)
  101. {
  102. grajace[i].kolor = 0;
  103. grajace[i].figura = 0;
  104. }
  105.  
  106. for (int i = 0; i < 11; i++)
  107. {
  108. grajace_split[i].kolor = 0;
  109. grajace_split[i].figura = 0;
  110. }
  111.  
  112. for (int j = 0; j < 2; j++)
  113. dodaj_karte_gracza(talia, pkt_gracza, grajace[j]);
  114.  
  115. dodaj_karte_krupiera(talia, pkt_krupiera, grajace[11]);
  116. }
  117.  
  118. void gra(karta talia[], int stawka, int &zetony)
  119. {
  120. int pkt_gracza = 0;
  121. int pkt_gracza_2 = 0;
  122. int pkt_krupiera = 0;
  123. int wybor = 0;
  124. int czyja_kolej = 0;
  125. int czyja_kolej_1 = 0;
  126. int czyja_kolej_2 = 0;
  127. int split = 0;
  128. int nast = 0;
  129.  
  130. karta grajace[19];
  131. karta grajace_split[11];
  132.  
  133. wartosci_kart(grajace, grajace_split, pkt_krupiera, pkt_gracza, talia);
  134.  
  135. int tura = 1;
  136. int i = 2;
  137.  
  138. system("cls");
  139. rysuj_statystyki(stawka, zetony);
  140. cout << "Ile zetonow chcesz obstawic ?" << endl; //Tu zaczyna sie runda gracza
  141.  
  142. stawka = obstawianie(zetony);
  143.  
  144.  
  145. while (czyja_kolej != 1 && i < 11)
  146. {
  147. rysuj_interface(grajace, stawka, zetony, pkt_gracza, pkt_gracza_2, pkt_krupiera, czyja_kolej, split, grajace_split);
  148. switch (sprawdzenie(pkt_gracza, pkt_gracza_2, split))
  149. {
  150. case 1:
  151. czyja_kolej = 1;
  152. krupier(grajace, stawka, zetony, pkt_gracza, pkt_gracza_2, pkt_krupiera, talia, czyja_kolej, split, grajace_split);
  153. break;
  154. case 0:
  155. pisz_menu(tura, stawka, zetony, grajace);
  156. decyzja_1(grajace, pkt_gracza, pkt_gracza_2, wybor, talia, czyja_kolej, czyja_kolej_1, czyja_kolej_2, tura, i, zetony, stawka, split, grajace_split);
  157. if (czyja_kolej == 1) krupier(grajace, stawka, zetony, pkt_gracza, pkt_gracza_2, pkt_krupiera, talia, czyja_kolej, split, grajace_split);
  158.  
  159. break;
  160. case -1:
  161. czyja_kolej = 1;
  162. break;
  163. }
  164. i++;
  165. }
  166. podsumowanie(pkt_gracza, pkt_gracza_2, pkt_krupiera, zetony, stawka, czyja_kolej, tura, grajace, split, grajace_split);
  167. }
  168.  
  169. void decyzja_1(karta grajace[], int &pkt_gracza, int &pkt_gracza_2, int &wybor, karta talia[], int &czyja_kolej, int &czyja_kolej_1, int &czyja_kolej_2, int &tura, int &i, int &zetony, int &stawka, int &split, karta grajace_split[])
  170. {
  171. cin >> wybor;
  172.  
  173. switch (wybor)
  174. {
  175. case 1:
  176. if (split == 1)
  177. {
  178. int ktora;
  179. cout << "Do ktorej kupki (hehe) chcialbys dodac karte?";
  180. cin >> ktora;
  181. if (ktora == 1)
  182. dodaj_karte_gracza(talia, pkt_gracza, grajace[i]);
  183. else
  184. dodaj_karte_gracza(talia, pkt_gracza_2, grajace_split[i]);
  185. }
  186.  
  187. else
  188. {
  189. dodaj_karte_gracza(talia, pkt_gracza, grajace[i]);
  190. cout << endl;
  191. tura = 2;
  192. }
  193.  
  194. break;
  195. case 2:
  196. if (split == 1)
  197. {
  198. int ktora;
  199. cout << "Dla ktorej kupki chcesz spasowac ?";
  200. cin >> ktora;
  201. if (ktora == 1)
  202. czyja_kolej_1 = 1;
  203. else
  204. czyja_kolej_2 = 1;
  205.  
  206. if (czyja_kolej_1 == 1 && czyja_kolej_2 == 1)
  207. czyja_kolej = 1;
  208. }
  209.  
  210. else
  211. czyja_kolej = 1;
  212.  
  213. break;
  214. case 3:
  215. zetony -= stawka;
  216. stawka = stawka * 2;
  217. tura++;
  218. i--;
  219.  
  220. break;
  221. case 4:
  222. zetony -= stawka;
  223. stawka = stawka * 2;
  224. split = 1;
  225. tura++;
  226. grajace_split[0] = grajace[1];
  227. grajace[1].figura = 0; grajace[1].kolor = 0;
  228. pkt_gracza = pkt_gracza / 2;
  229. pkt_gracza_2 = pkt_gracza;
  230.  
  231.  
  232. i = i - 2;
  233.  
  234. break;
  235. }
  236. }
  237.  
  238. int obstawianie(int &zetony)
  239. {
  240. int x;
  241. cin >> x;
  242. if (x > zetony || x < 1)
  243. {
  244. while (x > zetony || x < 1)
  245. {
  246. cout << "Nie posiadasz tylu zetonow, podaj inna stawke" << endl;
  247. cin >> x;
  248. }
  249. zetony = zetony - x;
  250. return x;
  251. }
  252.  
  253. else
  254. {
  255. zetony = zetony - x; //Aktualizacja posiadanych przez gracza zetonow
  256. return x;
  257. }
  258. }
  259.  
  260. void dodaj_karte_gracza(karta talia[], int &pkt_gracza, karta &karta_1)
  261. {
  262. losuj_karte(karta_1, talia);
  263. if (karta_1.figura <= 9)
  264. pkt_gracza += karta_1.figura;
  265. else if (karta_1.figura <= 13)
  266. pkt_gracza += 10;
  267. else if (pkt_gracza > 10)
  268. pkt_gracza += 1;
  269. else pkt_gracza += 11;
  270. }
  271.  
  272. void dodaj_karte_krupiera(karta talia[], int &pkt_krupiera, karta &karta_1)
  273. {
  274. losuj_karte(karta_1, talia);
  275. if (karta_1.figura <= 9)
  276. pkt_krupiera += karta_1.figura;
  277. else if (karta_1.figura <= 13)
  278. pkt_krupiera += 10;
  279. else if (pkt_krupiera > 10)
  280. pkt_krupiera += 1;
  281. else pkt_krupiera += 11;
  282. }
  283.  
  284. void losuj_karte(karta &karta_1, karta talia[])
  285. {
  286. int x = rand() % 156;
  287. karta_1 = talia[x];
  288. }
  289.  
  290. void rysuj_karte(karta karta_1, int split)
  291. {
  292. for (int i = 0; i < 17; i++) cout << "-"; cout << endl; //Gorna krawedz karty
  293. cout << "|"; wyswietl_figure(karta_1); cout << setw(14) << "|"; cout << endl; //Linia pod gorna krawedzia
  294. cout << "|" << setw(16) << "|"; cout << endl;
  295. rysuj_kolor(karta_1); cout << endl;
  296. cout << "|" << setw(16) << "|"; cout << endl;
  297. cout << "|" << setw(13) << " "; wyswietl_figure(karta_1); cout << "|"; cout << endl;
  298. for (int i = 0; i < 17; i++) cout << "-"; cout << endl;
  299. }
  300.  
  301. void wyswietl_figure(karta karta_1)
  302. {
  303. if (karta_1.figura >= 2 && karta_1.figura <= 10)
  304. {
  305. cout << setw(2) << karta_1.figura;
  306. }
  307.  
  308. else
  309. {
  310. switch (karta_1.figura)
  311. {
  312. case 11:
  313. cout << setw(2) << 'W';
  314. break;
  315. case 12:
  316. cout << setw(2) << 'D';
  317. break;
  318. case 13:
  319. cout << setw(2) << 'K';
  320. break;
  321. case 14:
  322. cout << setw(2) << 'A';
  323. break;
  324. }
  325. }
  326. }
  327.  
  328. void rysuj_pusta()
  329. {
  330. for (int i = 0; i < 17; i++) cout << "-"; cout << endl;
  331. for (int i = 0; i < 9; i++)
  332. {
  333. cout << "|";
  334. for (int j = 0; j < 15; j++)
  335. cout << " ";
  336. cout << "|";
  337. cout << endl;
  338. }
  339. for (int i = 0; i < 17; i++) cout << "-"; cout << endl;
  340. }
  341.  
  342. void rysuj_kolor(karta karta_1)
  343. {
  344. switch (karta_1.kolor)
  345. {
  346. case 1: //Karo
  347. cout << "|" << setw(8) << "*" << setw(8) << "|" << endl;
  348. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  349. cout << "|" << setw(10) << "*****" << setw(6) << "|" << endl;
  350. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  351. cout << "|" << setw(8) << "*" << setw(8) << "|";
  352. break;
  353. case 2: //Wino
  354. cout << "|" << setw(8) << "*" << setw(8) << "|" << endl;
  355. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  356. cout << "|" << setw(10) << "*****" << setw(6) << "|" << endl;
  357. cout << "|" << setw(11) << "* * *" << setw(5) << "|" << endl;
  358. cout << "|" << setw(9) << "***" << setw(7) << "|";
  359.  
  360. break;
  361. case 3: //Kier
  362. cout << "|" << setw(10) << "* *" << setw(6) << "|" << endl;
  363. cout << "|" << setw(11) << "*** ***" << setw(5) << "|" << endl;
  364. cout << "|" << setw(10) << "*****" << setw(6) << "|" << endl;
  365. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  366. cout << "|" << setw(8) << "*" << setw(8) << "|";
  367. break;
  368. case 4: //Trefl
  369. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  370. cout << "|" << setw(9) << "***" << setw(7) << "|" << endl;
  371. cout << "|" << setw(11) << "*******" << setw(5) << "|" << endl;
  372. cout << "|" << setw(11) << "*******" << setw(5) << "|" << endl;
  373. cout << "|" << setw(8) << "*" << setw(8) << "|";
  374. break;
  375. }
  376. }
  377.  
  378. void rysuj_interface(karta grajace[], int stawka, int zetony, int pkt_gracza, int pkt_gracza_2, int pkt_krupiera, int czyja_kolej, int split, karta grajace_split[])
  379. {
  380. system("cls");
  381.  
  382. rysuj_statystyki(stawka, zetony);
  383.  
  384. cout << setw(30) << "Twoje karty:" << endl << endl;
  385.  
  386. for (int i = 0; i < 11; i++)
  387. {
  388. if (grajace[i].figura != 0)
  389. rysuj_karte(grajace[i], split);
  390. else
  391. break;
  392. }
  393. cout << "Twoje punkty: " << pkt_gracza << endl << endl;
  394. cout << "-------------------------------------------" << endl << endl;
  395.  
  396. if (split == 1)
  397. {
  398. for (int i = 0; i < 11; i++)
  399. {
  400. if (grajace_split[i].figura != 0)
  401. rysuj_karte(grajace_split[i], split);
  402. else
  403. break;
  404.  
  405. }
  406. cout << "Twoje punkty: " << pkt_gracza_2 << endl << endl;
  407. cout << "-------------------------------------------" << endl << endl;
  408. }
  409.  
  410. cout << endl << setw(30) << "Karty krupiera: " << endl;
  411.  
  412. for (int i = 11; i < 19; i++)
  413. {
  414. if (grajace[i].figura != 0)
  415. rysuj_karte(grajace[i], split);
  416. else
  417. break;
  418. }
  419.  
  420. if (czyja_kolej == 0)
  421. rysuj_pusta();
  422.  
  423. cout << "Punkty krupiera: " << pkt_krupiera << endl << endl;
  424. cout << "-------------------------------------------" << endl << endl;
  425. }
  426.  
  427. void rysuj_statystyki(int stawka, int zetony)
  428. {
  429. cout << "Aktualna stawka: " << stawka;
  430. cout << setw(50) << "Pozostale zetony: " << zetony << endl << endl;
  431. }
  432.  
  433. void pisz_menu(int tura, int stawka, int zetony, karta grajace[])
  434. {
  435. cout << "Co chcesz zrobic? " << endl << endl;
  436. cout << "1. Dobrac karte (hit)" << endl;
  437. cout << "2. Nie dobierac karty (stand)" << endl;
  438. if (tura == 1)
  439. {
  440. if (stawka * 2 < zetony) cout << "3. Podwoic stawke (double down)" << endl;
  441. if (grajace[0].figura == grajace[1].figura) cout << "4. Rozdwoic karty (split)" << endl;
  442. }
  443. }
  444.  
  445. int sprawdzenie(int pkt_gracza, int pkt_gracza_2, int split)
  446. {
  447. if (split != 1)
  448. {
  449. if (pkt_gracza == 21) return 1;
  450. else if (pkt_gracza < 21) return 0;
  451. else if (pkt_gracza > 21) return -1;
  452. }
  453. else
  454. {
  455. if (pkt_gracza == 21 && pkt_gracza_2 == 21) return 1;
  456. if (pkt_gracza > 21 && pkt_gracza_2 > 21) return -1;
  457. else return 0;
  458. }
  459.  
  460. }
  461.  
  462. void krupier(karta grajace[], int stawka, int zetony, int pkt_gracza, int pkt_gracza_2, int &pkt_krupiera, karta talia[], int czyja_kolej, int split, karta grajace_split[])
  463. {
  464. int k = 13;
  465.  
  466. dodaj_karte_krupiera(talia, pkt_krupiera, grajace[12]);
  467. rysuj_interface(grajace, stawka, zetony, pkt_gracza, pkt_gracza_2, pkt_krupiera, czyja_kolej, split, grajace_split);
  468.  
  469.  
  470. while (pkt_krupiera < 17 && k < 19)
  471. {
  472. dodaj_karte_krupiera(talia, pkt_krupiera, grajace[k]);
  473. rysuj_interface(grajace, stawka, zetony, pkt_gracza, pkt_gracza_2, pkt_krupiera, czyja_kolej, split, grajace_split);
  474. k++;
  475. }
  476.  
  477. }
  478.  
  479. void podsumowanie(int &pkt_gracza, int &pkt_gracza_2, int &pkt_krupiera, int &zetony, int stawka, int &czyja_kolej, int &tura, karta grajace[], int &split, karta grajace_split[])
  480. {
  481. if (split == 1) cout << "Dla pierwszej rozgrywki: " << endl;
  482. podsumowanie_1(pkt_gracza, pkt_krupiera, zetony, stawka);
  483.  
  484. if (split == 1)
  485. {
  486. cout << "Dla drugiej rozgrywki: " << endl;
  487. podsumowanie_1(pkt_gracza_2, pkt_krupiera, zetony, stawka);
  488. }
  489.  
  490. czyja_kolej = 0;
  491. tura = 1;
  492. pkt_gracza = 0;
  493. pkt_krupiera = 0;
  494. split = 0;
  495.  
  496. for (int c = 0; c < 19; c++)
  497. {
  498. grajace[c].figura = 0;
  499. grajace[c].kolor = 0;
  500. }
  501.  
  502. for (int i = 0; i < 11; i++)
  503. {
  504. grajace_split[i].figura = 0;
  505. grajace_split[i].kolor = 0;
  506. }
  507. }
  508.  
  509. void podsumowanie_1(int &pkt_gracza, int &pkt_krupiera, int &zetony, int stawka)
  510. {
  511. if (pkt_gracza > 21)
  512. {
  513. cout << "Przegrales - tracisz postawione pieniadze" << endl << endl;
  514. }
  515.  
  516. else
  517. {
  518. if (pkt_krupiera > 21)
  519. {
  520. zetony = zetony + stawka * 2;
  521. cout << "Gratulacje wygrales " << stawka << " zetonow!" << endl << endl;
  522. }
  523. else
  524. {
  525. if (pkt_gracza > pkt_krupiera)
  526. {
  527. zetony = zetony + stawka * 2;
  528. cout << "Gratulacje wygrales " << stawka << " zetonow!" << endl << endl;
  529. }
  530. else if (pkt_gracza == pkt_krupiera)
  531. {
  532. zetony += stawka;
  533. cout << "Remis - otrzymujesz zwrot wartosci zakladu!" << endl << endl;
  534. }
  535. else if (pkt_gracza < pkt_krupiera)
  536. {
  537. cout << "Przegrales - tracisz postawione pieniadze!" << endl << endl;
  538. }
  539. }
  540. }
  541. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement