Advertisement
Guest User

Untitled

a guest
Nov 28th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. struct plansza{
  6. int wysokosc;
  7. int szerokosc;
  8. int **elementy;
  9.  
  10. };
  11.  
  12. typedef struct{ //typedef przypisuje pewnej nazwie(tu pos), jakiś typ danych(tu struct, które ma elemnty x i y)
  13. int x;
  14. int y;
  15. }pos;
  16.  
  17. void ZapiszDoPliku(struct plansza StanGry);
  18. struct plansza WczytajZPliku();
  19. struct plansza rozruch();
  20. void Wypisz(struct plansza);
  21. int sprawdzwygrana(struct plansza StanGry);
  22. pos Koordynaty();
  23.  
  24. int main()
  25. {
  26. struct plansza StanGry = rozruch(StanGry);
  27. int game_over=0;
  28. int Tura=0;
  29. Wypisz(StanGry);
  30. int poprawne;
  31. pos wybor;
  32.  
  33. while(!game_over){
  34. game_over = sprawdzwygrana(StanGry);
  35. while(game_over==1)
  36. {
  37. printf("Koniec Gry!");
  38. return 0;
  39. }
  40. poprawne = 0;
  41. do{
  42. wybor = Koordynaty();
  43. if(StanGry.elementy[wybor.y][wybor.x]==0)
  44. poprawne = 1;
  45. else{
  46. printf("Bledny ruch. Sprobuj ponownie:\n");
  47. }
  48. }while(!poprawne);
  49. StanGry.elementy[wybor.y][wybor.x]=Tura?'X':'O';//Jeżeli Tura==0 to zapisuje O jak Tura==1 to zapisuje X
  50. Wypisz(StanGry);
  51.  
  52. //Sprawdzanie czy ktoś wygrał
  53. Tura=(Tura+1)%2;//Alternuje miedzy Tura==0 i Tura==1
  54. ZapiszDoPliku(StanGry);
  55. }
  56.  
  57. }
  58.  
  59. void ZapiszDoPliku(struct plansza StanGry)
  60. {
  61. FILE *plik = fopen("Stan.txt","w+");
  62. fprintf(plik,"%d x %d\n", StanGry.wysokosc, StanGry.szerokosc);
  63. for(int i = 0; i < StanGry.wysokosc; ++i, fprintf(plik,"\n"))
  64. for(int j = 0; j < StanGry.szerokosc; ++j)
  65. fprintf(plik,"%d ", StanGry.elementy[i][j]);
  66. fclose(plik);
  67. }
  68.  
  69. struct plansza WczytajZPliku(){
  70. FILE *plik = fopen("Stan.txt","r");
  71. struct plansza StanGry;
  72. fscanf(plik,"%d x %d", &StanGry.wysokosc, &StanGry.szerokosc);
  73. printf("%d %d", StanGry.wysokosc, StanGry.szerokosc);
  74. StanGry.elementy=calloc(StanGry.wysokosc, sizeof(int*));//Tworzy wskaźnik który jest w stanie przechowywać StanGry.wysokosc wskaźników typu char
  75. for(int i=0; i<StanGry.wysokosc; i++){
  76. StanGry.elementy[i]=(int*)calloc(StanGry.szerokosc, sizeof(int));
  77. }
  78. for(int i = 0; i < StanGry.wysokosc; ++i, fprintf(plik,"\n"))
  79. for(int j = 0; j < StanGry.szerokosc; ++j)
  80. fscanf(plik,"%d", StanGry.elementy[i]+j);
  81. fclose(plik);
  82. return StanGry;
  83. }
  84.  
  85. struct plansza rozruch()
  86. {
  87. printf("Czy chcesz wczytac poprzedni stan gry?[t/n]");
  88. char wybor;
  89. int w,s;
  90. scanf("%c",&wybor);
  91. struct plansza wymiary;
  92. if(wybor=='t')
  93. wymiary = WczytajZPliku();
  94. else if(wybor=='n'){
  95. printf("prosze podac wymiary planszy: \n wyskokosc:");
  96. scanf("%d", &wymiary.wysokosc);
  97. printf("\n szerokosc: ");
  98. scanf("%d",&wymiary.szerokosc);
  99. printf("\n\n\n\n\n\n");
  100. wymiary.elementy=calloc(wymiary.wysokosc, sizeof(int*));
  101. for(int i=0; i<wymiary.wysokosc; i++){
  102. *(wymiary.elementy+i)=(int*)calloc(wymiary.szerokosc, sizeof(int));
  103. }
  104. }
  105. printf("wymiary: %dx%d\n\n", wymiary.wysokosc, wymiary.szerokosc);
  106. return wymiary;
  107. }
  108.  
  109. void Wypisz(struct plansza wymiary){
  110. for(int odlicz = 0 ; odlicz < wymiary.szerokosc ; ++odlicz)
  111. printf(" %d ", odlicz);
  112. printf("\n");
  113. for(int k = 0 ; k < wymiary.szerokosc ; ++k)
  114. printf("---|");
  115. printf("\n");
  116. for(int i = 0; i < wymiary.wysokosc; ++i, printf("\n"))
  117. {
  118. for(int j = 0; j < wymiary.szerokosc; ++j)
  119. if(wymiary.elementy[i][j])
  120. printf(" %c |",wymiary.elementy[i][j]);
  121. else
  122. printf(" |");
  123. printf("\n");
  124. for(int k = 0 ; k < wymiary.szerokosc ; ++k)
  125. printf("---|");
  126. }
  127. }
  128.  
  129. pos Koordynaty(){
  130. int x,y;
  131. scanf("%d %d", &x, &y);
  132. return (pos){x,y};
  133. }
  134.  
  135.  
  136. int sprawdzwygrana(struct plansza StanGry)
  137. {
  138. int wygrana = 1;
  139.  
  140. //sprawdzanie poziomo
  141. for(int wbok = 0; wbok<StanGry.szerokosc; wbok++)
  142. for(int wdol = 0; wdol<=StanGry.wysokosc-5; wdol++)
  143. if(StanGry.elementy[wbok][wdol] != 0)
  144. {
  145. if(StanGry.elementy[wbok][wdol] ==
  146. StanGry.elementy[wbok][wdol+1] &&
  147. StanGry.elementy[wbok][wdol] ==
  148. StanGry.elementy[wbok][wdol+2] &&
  149. StanGry.elementy[wbok][wdol] ==
  150. StanGry.elementy[wbok][wdol+3] &&
  151. StanGry.elementy[wbok][wdol] ==
  152. StanGry.elementy[wbok][wdol+4])
  153. {
  154. return wygrana;
  155. }
  156.  
  157. }
  158. //sprawdzanie pionowo
  159. for(int wdol = 0; wdol<StanGry.wysokosc; wdol++)
  160. for(int wbok = 0; wbok<=StanGry.szerokosc-5; wbok++)
  161. if(StanGry.elementy[wbok][wdol] != 0)
  162. {
  163. if(StanGry.elementy[wbok][wdol] ==
  164. StanGry.elementy[wbok+1][wdol] &&
  165. StanGry.elementy[wbok][wdol] ==
  166. StanGry.elementy[wbok+2][wdol] &&
  167. StanGry.elementy[wbok][wdol] ==
  168. StanGry.elementy[wbok+3][wdol] &&
  169. StanGry.elementy[wbok][wdol] ==
  170. StanGry.elementy[wbok+4][wdol])
  171. {
  172. return wygrana;
  173. }
  174. }
  175. return 0;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement