Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.15 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <string>
  5. #include <conio.h>
  6. #include "Header.h"
  7. #pragma warning(disable:4996)
  8. using namespace std;
  9.  
  10. //---------------------------------------------------------------------------------------
  11. // funkcje siatki
  12. //---------------------------------------------------------------------------------------
  13. const int p_rozmiar = 6; // rozmiar maksymalny planszy
  14.  
  15. // funkcja wypeliajaca plansze
  16. void wypelnijplanasze(char plansza[p_rozmiar][p_rozmiar])
  17. {
  18. char pionek = 'O'; // znacznik pionka
  19. for (int x = 5; x > 0; x--)
  20. {
  21. for (int y = 1; y < 6; y++) // wypelnia plansze pionkami
  22. {
  23. plansza[x][y] = pionek;
  24. }
  25. }
  26. plansza[3][3] = '-'; // tworzy puste miejsce
  27. }
  28.  
  29. // funkcja rysowania planszy i elementow gry
  30. void Rysuj(char plansza[p_rozmiar][p_rozmiar], int wynik, int ruchy, int pionki, int gry, int najwynik)
  31. {
  32. cout << "-----------------------------------------\n";
  33. cout << "| Ilość gier: " << gry << " | Najlepszy wynik: " << najwynik << " |\n";
  34. cout << "-----------------------------------------\n\n";
  35. cout << " ---------------------\n";
  36. for (int x = 5; x > 0; x--)
  37. {
  38. if (x == 3)
  39. {
  40. cout << " Y " << x << " | ";
  41. }
  42. else
  43. {
  44. cout << " " << x << " | ";
  45. }
  46. for (int y = 1; y < 6; y++)
  47. {
  48. cout << plansza[y][x] << " | ";
  49. }
  50. cout << "\n ---------------------\n";
  51. }
  52. cout << " 1 2 3 4 5 \n" << endl;
  53. cout << " X\n\n";
  54. cout << "-----------------------------------------\n";
  55. cout << "| Pozostałe pionki: " << pionki << " Wynik: " << wynik << " Ruchy: " << ruchy << " |\n";
  56. cout << "-----------------------------------------\n";
  57. }
  58.  
  59. // aktualizuje plansze
  60. void Aktualizuj(char plansza[p_rozmiar][p_rozmiar], int x, int y, int usunX, int usunY, int xbackup, int ybackup)
  61. {
  62. plansza[x][y] = 'O';
  63. plansza[usunX][usunY] = '-';
  64. plansza[xbackup][ybackup] = '-';
  65. }
  66. //---------------------------------------------------------------------------------------
  67. // Zasady i bledy funkcje
  68. //---------------------------------------------------------------------------------------
  69. // zasady i bledy
  70. int ZasadyiBledy(int &error)
  71. {
  72. if (error == -1)
  73. {
  74. cout << "\nZasada 1: Nie może być pionka w miejscu, na które chcesz przeskoczyć"
  75. "\n\nZasada 2: Ruch pionkiem jest możliwy tylko po planszy 5x5"
  76. "\n\nZasada 3: Ruch pionka jest możliwy tylko na miejsca, które nie są zajęte\n" << endl;
  77. }
  78. if (error == 1)
  79. {
  80. cout << "\nNie może być pionka w wybranym kierunku, aby dało się przeskoczyć\n";
  81. }
  82. else if (error == 2)
  83. {
  84. cout << "\nRuch pionkiem jest możliwy tylko po planszy 5x5\n";
  85. }
  86. else if (error == 3)
  87. {
  88. cout << "\nRuch pionka jest możliwy tylko na miejsca, które nie są zajęte\n" << endl;
  89. }
  90. error = 0;
  91. return (error);
  92. }
  93.  
  94. // funkcja sprawdza 3 zasady
  95. int Errorsprawdz(int x, int y, int usunX, int usunY, int &error, char plansza[p_rozmiar][p_rozmiar])
  96. {
  97. // zasada 1 czy da sie przeskoczyc
  98. if (plansza[usunX][usunY] != 'O')
  99. {
  100. error = 1;
  101. return (error);
  102. }
  103. // zasada 2 pionek nie moze wyjsc za plansze
  104. else if (usunX <= 0 || usunX >= 6 || usunY <= 0 || usunY >= 6)
  105. {
  106. error = 2;
  107. return (error);
  108. }
  109. // zasada 3 zajete miejsce
  110. else if (plansza[x][y] == 'O')
  111. {
  112. error = 3;
  113. return (error);
  114. }
  115. else
  116. {
  117. error = 0;
  118. return (error);
  119. }
  120. }
  121.  
  122. //---------------------------------------------------------------------------------------
  123. // Funkcje gry
  124. //---------------------------------------------------------------------------------------
  125. // Funkcja okreslania X
  126. int xRuch(char ruch, int &x)
  127. {
  128. if (ruch == 'W' || ruch == 'w')
  129. {
  130. x = x;
  131. }
  132. else if (ruch == 'D' || ruch == 'd')
  133. {
  134. x = x + 2;
  135. }
  136. else if (ruch == 'S' || ruch == 's')
  137. {
  138. x = x;
  139. }
  140. else if (ruch == 'A' || ruch == 'a')
  141. {
  142. x = x - 2;
  143. }
  144. return (x);
  145. }
  146.  
  147. // funkcja usuwania pionka z wpolzendnej X
  148. int UsunX(char ruch, int x, int &usunX)
  149. {
  150. if (ruch == 'W' || ruch == 'w')
  151. {
  152. usunX = x;
  153. }
  154. else if (ruch == 'D' || ruch == 'd')
  155. {
  156. usunX = x + 1;
  157. }
  158. else if (ruch == 'S' || ruch == 's')
  159. {
  160. usunX = x;
  161. }
  162. else if (ruch == 'A' || ruch == 'a')
  163. {
  164. usunX = x - 1;
  165. }
  166. return (usunX);
  167. }
  168.  
  169. // Funkcja okreslania Y
  170. int yRuch(char ruch, int &y)
  171. {
  172. if (ruch == 'W' || ruch == 'w')
  173. {
  174. y = y + 2;
  175. }
  176. else if (ruch == 'D' || ruch == 'd')
  177. {
  178. y = y;
  179. }
  180. else if (ruch == 'S' || ruch == 's')
  181. {
  182. y = y - 2;
  183. }
  184. else if (ruch == 'A' || ruch == 'a')
  185. {
  186. y = y;
  187. }
  188. return (y);
  189. }
  190.  
  191. // funkcja usuwania pionka z wpolzendnej Y
  192. int UsunY(char ruch, int y, int &usunY)
  193. {
  194. if (ruch == 'W' || ruch == 'w')
  195. {
  196. usunY = y + 1;
  197. }
  198. else if (ruch == 'D' || ruch == 'd')
  199. {
  200. usunY = y;
  201. }
  202. else if (ruch == 'S' || ruch == 's')
  203. {
  204. usunY = y - 1;
  205. }
  206. else if (ruch == 'A' || ruch == 'a')
  207. {
  208. usunY = y;
  209. }
  210. return (usunY);
  211. }
  212.  
  213. //---------------------------------------------------------------------------------------
  214. // zmienne funcje
  215. //---------------------------------------------------------------------------------------
  216.  
  217. void Clear()
  218. {
  219. system("cls");
  220. }
  221.  
  222. int pioneklicznik(int &pionki, char plansza[p_rozmiar][p_rozmiar])
  223. {
  224. pionki = 0;
  225. for (int i = 5; i > 0; i--)
  226. {
  227. for (int j = 1; j < 6; j++)
  228. {
  229. if (plansza[i][j] == 'O')
  230. {
  231. pionki++; // Liczy pionki
  232. }
  233. }
  234. }
  235. return (pionki);
  236. }
  237.  
  238. int Wynik(int &wynik, int pionki, char plansza[p_rozmiar][p_rozmiar])
  239. {
  240. switch (pionki)
  241. {
  242. case 8: wynik = 10; // 8 pionkow
  243. break;
  244. case 7: wynik = 20;
  245. break;
  246. case 6: wynik = 30;
  247. break;
  248. case 5: wynik = 40;
  249. break;
  250. case 4: wynik = 50;
  251. break;
  252. case 3: wynik = 60;
  253. break;
  254. case 2: wynik = 70;
  255. break;
  256. case 1: wynik = 80; // 1 pionek
  257. break;
  258. default: wynik = 0;
  259. }
  260. if (pionki == 1 && plansza[3][3] == 'O')
  261. {
  262. wynik = 100; // pionek na srodku
  263. }
  264. return (wynik);
  265. }
  266.  
  267. int Najwynik(int wynik, int &najwynik)
  268. {
  269. if (wynik > najwynik)
  270. {
  271. najwynik = wynik;
  272. cout << "Gratulacje masz nowy rekord!\n";
  273. }
  274. else
  275. {
  276. najwynik = najwynik;
  277. }
  278. return (najwynik);
  279. }
  280.  
  281. //---------------------------------------------------------------------------------------
  282. // Gra
  283. //---------------------------------------------------------------------------------------
  284. void main()
  285. {
  286. setlocale(LC_ALL, "");
  287. //---------------------------------------------------------------------------------------
  288. // Zmienne
  289. //---------------------------------------------------------------------------------------
  290. char plansza[p_rozmiar][p_rozmiar]; // plansza
  291. char ruch = ' '; // gdzie poruszyc
  292. int error = 0; // Sprawdzanie bledow
  293. int x = 0; // poczatkowy X
  294. int xbackup = 0; // backup wczesniejszej pozycji X
  295. int y = 0; // poczatkowy Y
  296. int ybackup = 0; // backup wczesniejszej pozycji Y
  297. int usunX = 0; // usuwanie pionka z wspolzendnej X
  298. int usunY = 0; // usuwanie pionka z wspolzendnej Y
  299. int wynik = 0; // wynik
  300. int najwynik = 0; // najlepszy wynik
  301. int ruchy; // licznik ruchow
  302. int pionki = 0; // licznik pionkow
  303. int gry = 0; // ilosc gier
  304. bool wlasciwy = false;
  305. //---------------------------------------------------------------------------------------
  306. // zmienne menu
  307. //---------------------------------------------------------------------------------------
  308. bool Gra = true; // czy gracz jest w grze
  309. bool Rozpocznijgre = false; // rozpoczyna gre
  310. //---------------------------------------------------------------------------------------
  311. // Menu
  312. //---------------------------------------------------------------------------------------
  313.  
  314. string imie;
  315. cout<<"Witaj"<<endl;
  316. cout<<"Podaj Nick"<<endl;
  317. cin >> imie;
  318. osoba gracz1;
  319. gracz1.imie = imie;
  320. Clear();
  321.  
  322.  
  323. while (Gra == true)
  324. {
  325. // tytul
  326.  
  327.  
  328.  
  329. int wybierz; // Wybor gracza
  330. bool menu = true; // menu petla
  331. while (menu == true)
  332. { cout <<
  333. "\n ###### ### ## ## ####### ######## ## ## #### ## ## \n"
  334. " ## ## ## ## ### ### ## ## ## ### ## ## ## ## \n "
  335. "## ## ## #### #### ## ## ## #### ## ## ## ## \n "
  336. " ###### ## ## ## ### ## ## ## ## ## ## ## ## ##### \n "
  337. " ## ######### ## ## ## ## ## ## #### ## ## ## \n "
  338. "## ## ## ## ## ## ## ## ## ## ### ## ## ## \n"
  339. " ###### ## ## ## ## ####### ## ## ## #### ## ## \n\n"<< endl;
  340.  
  341.  
  342. cout << "Menu główne\n\n"
  343. "1. Rozpocznij gre\n"
  344. "2. Instrukcja gry\n"
  345. "3. Zasady gry\n"
  346. "4. Wyjście\n\n";
  347. cout << "Wybierz: ";
  348. cin >> wybierz; // wprowadz
  349. switch (wybierz)
  350. {
  351. case 1: menu = false; // zamyka menu
  352. wypelnijplanasze(plansza); // wypelnia plansze
  353. gry++;
  354. ruchy = 0;
  355. Rozpocznijgre = true; // rozpoczyna gre
  356. Clear();
  357. menu = true;
  358. break;
  359. case 2: do{
  360. cout << "\nGra _Samotnik_ polega na poruszaniu tylko jednego pionka tak aby przeskoczył\n"
  361. "nad innym pionkiem na planszy. Pionek może przeskoczyć pionka,\n"
  362. "który jest tuż obok i tylko w pozycji pionowej lub poziomej.\nNie można przeskoczyć "
  363. "pionka po skosie planszy.\nŻeby przeskoczyć pionka musi być puste miejsce obok niego,\n"
  364. "aby można go było przeskoczyć.\n"
  365. "Nie można przeskoczyć na miejsce, w którym jest już inny pionek.\n"
  366. "Przeskoczony pionek znika z planszy.\n\n"
  367.  
  368. "W każdej turze wybierasz jeden z możliwych pionków przyległy do pionka,\n"
  369. "którego można przeskoczyć. Możesz kontynuować grę jednym pionkiem,\n"
  370. "aż braknie pionka którego można przeskoczyć.\n"
  371. "Nowy ruch rozpoczyna się po wybraniu innego pionka.\n\n"
  372.  
  373. "Żeby zrobić pierwszy ruch musisz wybrać pionek,\n"
  374. "który chcesz poruszyć przez wpisywanie współrzędnych X i Y\n"
  375. "i później wybrać jeden z kierunków góra, dół, lewo, prawo ,\n"
  376. "używając przycisków W S A D.\n\n"
  377. "Aby powrócic wcisnij ESC ,\n";}
  378. while(getch() != 27);
  379. Clear();
  380. break;
  381. case 3: error = -1; // pokazuje zasady
  382. ZasadyiBledy(error); // wywoluje funkcje
  383. while(getch() != 27);
  384. Clear();
  385. break;
  386. case 4: menu = false; // zamyka menu
  387. Gra = false; // koniec gry
  388. break;
  389. case 5: error = -1; // pokazuje zasady
  390. ZasadyiBledy(error); // wywoluje funkcje
  391. break;
  392.  
  393. default: cout << "Spróbuj inny klawisz\n";
  394. }
  395. }
  396. if (Gra == false)
  397. {
  398. break;
  399. }
  400. //---------------------------------------------------------------------------------------
  401. // Gra
  402. //---------------------------------------------------------------------------------------
  403. while (Rozpocznijgre = true)
  404. {
  405. pioneklicznik(pionki, plansza);
  406. Wynik(wynik, pionki, plansza); // sprawdza wynik
  407. Rysuj(plansza, wynik, ruchy, pionki, gry, najwynik); // Rysuje plansze
  408. cout << endl;
  409. while (wlasciwy == false)
  410. {
  411. cout << "Którym pionkiem chcesz zacząć?" << endl;
  412. cout << "Jeśli chcesz wyjść wpisz dwa razy 0" << endl;
  413. cout << "Wybierz pozycje na osi x: ";
  414. cin >> x;
  415. cout << "Wybierz pozycje na osi y: ";
  416. cin >> y;
  417. if (x == 0 && y == 0)
  418. {
  419. Rozpocznijgre = false;
  420. wlasciwy = true;
  421. }
  422. else if (x <= -1 || x >= 6 || y <= -1 || y >= 6 || plansza[x][y] != 'O')
  423. {
  424. cout << "Podałeś nieprawidłową pozycje, sprobuj ponownie. \n\n"; // zly rych
  425. }
  426.  
  427. else
  428. {
  429. xbackup = x;
  430. ybackup = y;
  431. wlasciwy = true;
  432. }
  433. }//
  434. if (Rozpocznijgre == false)
  435. {
  436. Clear();
  437. break;
  438. }
  439. wlasciwy = false;
  440. while (wlasciwy == false)
  441. {
  442. cout << "W którą stronę chcesz się ruszyć?" << endl;
  443. cout << "Góra, Dół, Lewo, Prawo => WSAD : ";
  444. cin >> ruch; // podaj ruch
  445. switch (ruch)
  446. {
  447. case 'W': wlasciwy = true;
  448. break;
  449. case 'w': wlasciwy = true;
  450. ruch = 'W';
  451. break;
  452. case 'D': wlasciwy = true;
  453. break;
  454. case 'd': wlasciwy = true;
  455. ruch = 'D';
  456. break;
  457. case 'S': wlasciwy = true;
  458. break;
  459. case 's': wlasciwy = true;
  460. ruch = 'S';
  461. break;
  462. case 'A': wlasciwy = true;
  463. break;
  464. case 'a': wlasciwy = true;
  465. ruch = 'A';
  466. break;
  467. default: cout << "Spróbuj jeszcze raz\n";
  468. }
  469. }
  470. wlasciwy = false; //resetuje dobry ruch mozliwosc nastepnego
  471. UsunX(ruch, x, usunX); // ktore pole jest uwuane?
  472. xRuch(ruch, x); // ktore pole jest nowym polem?
  473. UsunY(ruch, y, usunY); // ktore pole jest uwuane?
  474. yRuch(ruch, y); // ktore pole jest nowym polem?
  475. Errorsprawdz(x, y, usunX, usunY, error, plansza); // sprawdza zeby zobaczyc czy jest zly ruch
  476. if (error != 0) // jesli nie jest wazny
  477. {
  478. ZasadyiBledy(error); // pokazuje dlaczego
  479. }
  480. else if (error == 0) // inaczej
  481. {
  482. Aktualizuj(plansza, x, y, usunX, usunY, xbackup, ybackup); // aktualizuje siatke
  483. ruchy++; // aktualizuje ruchy
  484. Clear();
  485. }
  486. }
  487. cout << "Twój wynik końcowy to: " << wynik << "\n";
  488. Najwynik(wynik, najwynik);
  489. gracz1.punkty = Najwynik(wynik, najwynik);
  490. Top10 ranking("ranking.txt");
  491. ranking._getTop10();
  492. ranking._inputPerson(gracz1,1);
  493. ranking._displayRank();
  494. ranking._setTop10();
  495. Clear();
  496. }
  497. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement