Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. void check(int **rysowanie, int height, int width,int zetony,bool &wygrana){
  7. //horizontal
  8.  
  9. int wincondition;
  10.  
  11. for (int i=1; i<width+1;i++){
  12. wincondition=1;
  13. for (int j=1; j<height+1;j++){
  14. if((rysowanie[i][j]==rysowanie[i][j+1])&&(rysowanie[i][j]!=0)){
  15. wincondition++;
  16. if(wincondition==zetony){
  17. cout<<"1";
  18. system("pause");
  19. wygrana=true;
  20. return;
  21. }}
  22. else
  23. wincondition=1;
  24. }}
  25.  
  26. //vertical
  27.  
  28. for (int i=1; i<width+1;i++){
  29. wincondition=1;
  30. for (int j=1; j<height+1;j++){
  31. if(rysowanie[j][i]==rysowanie[j+1][i]&&rysowanie[j][i]!=0){
  32. wincondition++;
  33. if(wincondition==zetony){
  34. cout<<"2";
  35. system("pause");
  36. wygrana=true;
  37. return;
  38. }}
  39. else
  40. wincondition=1;
  41. }}
  42.  
  43. //diagonal up left
  44.  
  45. for (int i=1; i<=height;i++){
  46. wincondition=1;
  47. for (int j=1; j<=width;j++){
  48. if (rysowanie[i][j]==rysowanie[i+1][j+1]&&(rysowanie[i][j]!=0)){
  49. wincondition++;
  50. if(wincondition==zetony){
  51. cout<<"3";
  52. system("pause");
  53. wygrana=true;
  54. return;
  55. }}
  56. else
  57. {
  58. wincondition=1;
  59. }}}
  60.  
  61. //diagonal up right
  62.  
  63. for (int i=1; i<=height;i++){
  64. wincondition=1;
  65. for (int j=width; j>=1;j--){
  66. if (rysowanie[i][j]==rysowanie[i+1][j-1]&&(rysowanie[i][j]!=0)){
  67. wincondition++;
  68. if(wincondition==zetony){
  69. cout<<"4";
  70. system("pause");
  71. wygrana=true;
  72. return;
  73. }}
  74. else
  75. {
  76. wincondition=1;
  77. }}}
  78. return;
  79. }
  80.  
  81.  
  82. void spr(){
  83. if(cin.fail())
  84. {
  85. cin.clear();
  86. char c;
  87. cin>>c;
  88. }
  89. return;
  90. }
  91.  
  92.  
  93.  
  94. void nazwa(){
  95. cout << "==============="<< endl;
  96. cout << "MAGICZNE ZETONY"<< endl;
  97. cout << "==============="<< endl<<endl;
  98. return;
  99. }
  100.  
  101.  
  102.  
  103.  
  104. void display(int **rysowanie, int height, int width){
  105.  
  106. for(int i=0; i<height+2;i++){
  107. cout << endl;
  108. for(int j=0; j<width+2;j++){
  109. if (rysowanie[i][j]==1){cout<<char(88);}
  110. else if (rysowanie[i][j]==2){cout<<char(79);}
  111. else if (rysowanie[i][j]==3){cout<<char(201);}
  112. else if (rysowanie[i][j]==4){cout<<char(187);}
  113. else if (rysowanie[i][j]==5){cout<<char(200);}
  114. else if (rysowanie[i][j]==6){cout<<char(188);}
  115. else if (rysowanie[i][j]==7){cout<<char(205);}
  116. else if (rysowanie[i][j]==8){cout<<char(186);}
  117. else if (rysowanie[i][j]==0){cout<<char(NULL);}
  118. }}
  119. return;
  120. }
  121.  
  122.  
  123.  
  124.  
  125. int main()
  126. {
  127. nazwa();
  128. bool wygrana=0, powtorka=0;
  129. int height, width, zetony, kolumna, parametr=0;
  130. char gracz=char(NULL);
  131. int ruch=1;
  132.  
  133. cout << "podaj szerokosc planszy(od 1 w gore)" << endl;
  134. while (true){
  135. cin >> width;
  136. if(width>0) break;
  137. else cout <<endl << "podana wartosc nie jest wieksza od zera lub nie jest to liczba: ";
  138. spr();
  139. }
  140.  
  141.  
  142.  
  143. cout << "podaj wysokosc planszy(od 1 w gore)" << endl;
  144. while (true){
  145. cin >> height;
  146. if(height>0) break;
  147. else cout <<endl << "podana wartosc nie jest wieksza od zera lub nie jest to liczba: ";
  148. spr();
  149. }
  150.  
  151.  
  152.  
  153. cout << "podaj ile znakow w lini aby zakonczyc gre" << endl;
  154. while (true){
  155. cin >> zetony;
  156. if (((zetony<=height) || (zetony<=width))&&(zetony>0)) break;
  157. else cout <<endl << "podana wartosc jest niemozliwa do uzyskania lub nie jest to liczba: ";
  158. spr();
  159. }
  160. //definicja tablicy dwuwymiarowej dynamicznej
  161. int **rysowanie=new int *[height+2];
  162. for (int i=0;i<height+2;i++){
  163. rysowanie[i]=new int[width+2];
  164. }
  165. //int rysowanie[height+2/*wiersz*/][width+2/*kolumna*/];
  166. for(int i=0;i<height+2;i++)
  167. for(int j=0;j<width+2;j++){
  168. rysowanie[i][j]=0;
  169. if((j==0)||(j==width+1)){rysowanie[i][j]=8;}//pionoowe=8
  170. if((i==0)||(i==height+1)){rysowanie[i][j]=7;}//poziome =7
  171. if((i==0)&&(j==0)){rysowanie[i][j]=3;}//lewy g naroznik =3
  172. if((i==0)&&(j==width+1)){rysowanie[i][j]=4;}//prawy g naroznik=4
  173. if((i==height+1)&&(j==0)){rysowanie[i][j]=5;}//lewy d naroznik =5
  174. if((i==height+1)&&(j==width+1)){rysowanie[i][j]=6;}//prawy d naroznik=6
  175. }
  176.  
  177.  
  178.  
  179. int poj[width];
  180. for(int i=0; i<width; i++){poj[i]=0;}
  181. gracz=char(88);
  182.  
  183.  
  184.  
  185. //pocz¹tek gry
  186. while(!wygrana){
  187. if(powtorka==true)//spawdzanie czy kolumna sie powtórzy³¹
  188. {
  189. cout << "kolumna ktora wybrales jest pelna sprobuj jeszcze raz" << endl;
  190. ruch--;
  191. powtorka=false;
  192. system("pause");
  193. }
  194.  
  195.  
  196.  
  197. system("cls");
  198. nazwa();
  199. cout <<"RUCH NUMER : "<< ruch<<endl;
  200. //RYSOWANIE
  201.  
  202.  
  203. display(rysowanie, height, width);
  204. cout<<endl;
  205. if(zetony==1){
  206. wygrana=true;
  207. }
  208. //KONIEC RYSOWANIA
  209.  
  210.  
  211.  
  212. //sprawdzanie remisu
  213. if(ruch>height*width){
  214. check(rysowanie, height, width, zetony, wygrana);
  215. gracz=char(NULL);
  216. break;
  217. }
  218.  
  219.  
  220. //zmiana gracza
  221. else if(gracz==char(88)){
  222. cout << "ruch gracza 1(O)" << endl;
  223. gracz=char(79);
  224. }
  225.  
  226.  
  227.  
  228. else if(gracz==char(79)){
  229. cout << "ruch gracza 2(X)" << endl;
  230. gracz=char(88);
  231. }
  232.  
  233.  
  234.  
  235. //wybieranie dobrej kolumny
  236. cout << "wybierz kolumne" << endl;
  237. while (true){
  238. cin >> kolumna;
  239.  
  240. if((kolumna <=width) && (kolumna> 0)) {
  241. poj[kolumna-1]++;
  242. if(gracz==char(88)){
  243. while((rysowanie[height-parametr][kolumna]==1 || rysowanie[height-parametr][kolumna]==2)&&parametr<height){
  244. parametr++;
  245. }
  246. rysowanie[height-parametr][kolumna]=1;
  247. }
  248. else if(gracz==char(79)){
  249. while(rysowanie[height-parametr][kolumna]==1 || rysowanie[height-parametr][kolumna]==2){
  250. parametr++;
  251. }
  252. rysowanie[height-parametr][kolumna]=2;
  253. }
  254. break;
  255. }
  256. else cout<< endl<< "wartosc nie jest mozliwa do uzyskania lub nie jest liczba: ";
  257. spr();
  258. }
  259.  
  260.  
  261.  
  262.  
  263. //sprawdzanie czy nie jest za du¿o liczb w kolumnie
  264. if (poj[kolumna-1]>height)
  265. {
  266. powtorka=true;
  267. poj[kolumna-1]-=1;
  268. int i=height-parametr, j=kolumna;
  269. if((j==0)||(j==width+1)){rysowanie[i][j]=8;}//pionoowe=8
  270. if((i==0)||(i==height+1)){rysowanie[i][j]=7;}//poziome =7
  271. i=0, j=0;
  272. if (gracz==char(88)) {gracz=char(79);}
  273. else {gracz=char(88);}
  274. }
  275. //zapisywanie gracza
  276. check(rysowanie, height, width, zetony, wygrana);
  277. parametr=0;
  278. ruch++;
  279. }
  280.  
  281.  
  282.  
  283. system("cls");
  284. nazwa();
  285. display(rysowanie, height, width);
  286. cout << endl<<endl;
  287.  
  288. for (int i=0;i<height+2;i++){
  289. delete [] rysowanie[i];
  290. }
  291. delete []rysowanie;
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298. if (gracz==char(88)){
  299. cout << "==============================="<<endl;
  300. cout << "ROZGRYWKE WYGRYWA GRACZ NUMER 2"<<endl;
  301. cout << "==============================="<<endl;}
  302.  
  303. else if (gracz==char(79)){
  304. cout << "==============================="<<endl;
  305. cout << "ROZGRYWKE WYGRYWA GRACZ NUMER 1"<<endl;
  306. cout << "==============================="<<endl;}
  307.  
  308. else if (gracz==char(NULL)){
  309. cout << "====="<<endl;
  310. cout << "REMIS"<<endl;
  311. cout << "====="<<endl;
  312. }
  313.  
  314. cout << "w ruchu numer : " << ruch-1<<endl;
  315. return 0;
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement