giganciprogramowania

l16 Gra w życie unix

Apr 26th, 2023
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include<stdio.h>
  3. using namespace std;
  4.  
  5. const int rozmiar = 20;
  6.  
  7. void wyswietl(int tab[rozmiar][rozmiar])
  8. {
  9. for (int i = 0; i < rozmiar; i++)
  10. {
  11. for (int j = 0; j < rozmiar; j++)
  12. {
  13. if (tab[i][j] == 0)
  14. {
  15. cout << " ";
  16. }
  17. else
  18. {
  19. cout << "X";
  20. }
  21. }
  22. cout << endl;
  23. }
  24. }
  25.  
  26. int policz_sasiadow(int tab[rozmiar][rozmiar], int i, int j)
  27. {
  28. int sasiedzi = 0;
  29. int gora;
  30. int dol;
  31. int srodekGoraDol;
  32. int prawo;
  33. int lewo;
  34. int srodekPrawoLewo;
  35.  
  36. if (i == 0)
  37. {
  38. gora = rozmiar - 1;
  39. srodekGoraDol = 0;
  40. dol = 1;
  41. }
  42. else if (i == rozmiar - 1)
  43. {
  44. gora = rozmiar - 2;
  45. srodekGoraDol = rozmiar - 1;
  46. dol = 0;
  47. }
  48. else
  49. {
  50. gora = i - 1;
  51. srodekGoraDol = i;
  52. dol = i + 1;
  53. }
  54. if (j == 0)
  55. {
  56. lewo = rozmiar - 1;
  57. srodekPrawoLewo = 0;
  58. prawo = 1;
  59. }
  60. else if (j == rozmiar - 1)
  61. {
  62. lewo = rozmiar - 2;
  63. srodekPrawoLewo = rozmiar - 1;
  64. prawo = 0;
  65. }
  66. else
  67. {
  68. lewo = j - 1;
  69. srodekPrawoLewo = j;
  70. prawo = j + 1;
  71. }
  72.  
  73. sasiedzi += tab[gora][lewo];
  74. sasiedzi += tab[srodekGoraDol][lewo];
  75. sasiedzi += tab[dol][lewo];
  76. sasiedzi += tab[gora][srodekPrawoLewo];
  77. sasiedzi += tab[dol][srodekPrawoLewo];
  78. sasiedzi += tab[gora][prawo];
  79. sasiedzi += tab[srodekGoraDol][prawo];
  80. sasiedzi += tab[dol][prawo];
  81. return sasiedzi;
  82. }
  83.  
  84.  
  85. void pokolenie(int tab[rozmiar][rozmiar])
  86. {
  87.  
  88. int nowa_tab[rozmiar][rozmiar]={0};
  89.  
  90. for (int i = 0; i < rozmiar; i++)
  91. {
  92. for (int j = 0; j < rozmiar; j++)
  93. {
  94. int sasiedzi = policz_sasiadow(tab, i, j);
  95. if (tab[i][j] == 1 && sasiedzi < 2)
  96. {
  97. nowa_tab[i][j] = 0;
  98. }
  99. else if (tab[i][j] == 1 && sasiedzi > 3)
  100. {
  101. nowa_tab[i][j] = 0;
  102. }
  103. else if (tab[i][j] == 1)
  104. {
  105. nowa_tab[i][j] = 1;
  106. }
  107. else if (tab[i][j] == 0 && sasiedzi == 3)
  108. {
  109. nowa_tab[i][j] = 1;
  110. }
  111. }
  112. }
  113.  
  114. for (int i = 0; i < rozmiar; i++)
  115. {
  116. for (int j = 0; j < rozmiar; j++)
  117. {
  118. tab[i][j] = nowa_tab[i][j];
  119. }
  120. }
  121. }
  122.  
  123. void dodaj_populacje(int tab[rozmiar][rozmiar], int ilosc)
  124. {
  125. for (int i = 0; i < ilosc; i++)
  126. {
  127. tab[rand() % rozmiar][rand() % rozmiar] = 1;
  128. }
  129. }
  130.  
  131.  
  132. void graj_dzwiek()
  133. {
  134. cout<<"\a";
  135. }
  136.  
  137.  
  138. int policz_populacje(int tab[rozmiar][rozmiar])
  139. {
  140. int rozmiarPopulacji = 0;
  141. for (int i = 0; i < rozmiar; i++)
  142. {
  143. for (int j = 0; j < rozmiar; j++)
  144. {
  145. rozmiarPopulacji += tab[i][j];
  146. }
  147. }
  148. return rozmiarPopulacji;
  149. }
  150.  
  151.  
  152. void zmiana_koloru(int kolor)
  153. {
  154. if (kolor == 0)
  155. {
  156. printf("\033[34m");
  157. printf("\033[41m");
  158. }
  159. else if (kolor == 1)
  160. {
  161. printf("\033[31m");
  162. printf("\033[44m");
  163. }
  164. else if (kolor == 2)
  165. {
  166. printf("\033[35m");
  167. printf("\033[40m");
  168. }
  169. else if (kolor == 3)
  170. {
  171. printf("\033[30m");
  172. printf("\033[45m");
  173. }
  174. }
  175. int main()
  176. {
  177. int plansza[rozmiar][rozmiar] = { 0 };
  178. int nrPokolenia = 0;
  179. int liczbaPopulacji = 0;
  180.  
  181. plansza[9][8] = 1;
  182. plansza[9][10] = 1;
  183. plansza[10][10] = 1;
  184. plansza[10][9] = 1;
  185. plansza[11][9] = 1;
  186. printf("\033[32m");
  187. printf("\033[47m");
  188.  
  189. int wybor;
  190. while (true)
  191. {
  192. printf("\033[H\033[J");
  193.  
  194.  
  195. liczbaPopulacji = policz_populacje(plansza);
  196. cout << "Numer pokolenia: " << nrPokolenia << " ilosc osobnikow: " << liczbaPopulacji << endl;
  197. wyswietl(plansza);
  198. cout << endl << endl;
  199. cout << "Co chcesz zrobic?" << endl;
  200. cout << "1-Kolejne pokolenie" << endl;
  201. cout << "2-Zakoncz symulacje" << endl;
  202. cout << "3-Zmien kolor" << endl;
  203. cout << "4-Dodaj populacje" << endl;
  204. cout << "5-Zagraj dzwiek pokolenia" << endl;
  205.  
  206.  
  207.  
  208.  
  209. cin >> wybor;
  210. switch (wybor)
  211. {
  212. case 1 :
  213. nrPokolenia++;
  214. pokolenie(plansza);
  215. break;
  216. case 2:
  217. exit(0);
  218. break;
  219. case 3:
  220. zmiana_koloru(rand() % 4);
  221. break;
  222. case 4:
  223. int dodanaPopulacja;
  224. cout << "Ile populacji chcesz dodac?" << endl;
  225. cin >> dodanaPopulacja;
  226. dodaj_populacje(plansza, dodanaPopulacja);
  227. liczbaPopulacji = policz_populacje(plansza);
  228. break;
  229. case 5:
  230. graj_dzwiek();
  231. break;
  232.  
  233.  
  234. default:
  235. cout << "Blad symulacji, nieznane polecenie" << endl;
  236. break;
  237.  
  238.  
  239. }
  240. }
  241.  
  242. }
Add Comment
Please, Sign In to add comment