SHOW:
|
|
- or go back to the newest paste.
1 | #include <iostream> | |
2 | #include<windows.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(int rozmiarPopulacji) | |
133 | { | |
134 | Beep(rozmiarPopulacji, 500); | |
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 | system("Color 71"); | |
157 | } | |
158 | else if (kolor == 1) | |
159 | { | |
160 | system("Color 72"); | |
161 | } | |
162 | else if (kolor == 2) | |
163 | { | |
164 | system("Color 74"); | |
165 | } | |
166 | else if (kolor == 3) | |
167 | { | |
168 | system("Color 70"); | |
169 | } | |
170 | } | |
171 | int main() | |
172 | { | |
173 | int plansza[rozmiar][rozmiar] = { 0 }; | |
174 | int nrPokolenia = 0; | |
175 | int liczbaPopulacji = 0; | |
176 | ||
177 | plansza[9][8] = 1; | |
178 | plansza[9][10] = 1; | |
179 | plansza[10][10] = 1; | |
180 | plansza[10][9] = 1; | |
181 | plansza[11][9] = 1; | |
182 | system("Color 7A"); | |
183 | int wybor; | |
184 | while (true) | |
185 | { | |
186 | system("cls"); | |
187 | nrPokolenia++; | |
188 | liczbaPopulacji = policz_populacje(plansza); | |
189 | cout << "Numer pokolenia: " << nrPokolenia << " ilosc osobnikow: " << liczbaPopulacji << endl; | |
190 | wyswietl(plansza); | |
191 | cout << endl << endl; | |
192 | cout << "Co chcesz zrobic?" << endl; | |
193 | cout << "1-Kolejne pokolenie" << endl; | |
194 | cout << "2-Zakoncz symulacje" << endl; | |
195 | cout << "3-Zmien kolor" << endl; | |
196 | cout << "4-Dodaj populacje" << endl; | |
197 | cout << "5-Zagraj dzwiek pokolenia" << endl; | |
198 | ||
199 | ||
200 | ||
201 | ||
202 | cin >> wybor; | |
203 | switch (wybor) | |
204 | { | |
205 | case 1 : | |
206 | pokolenie(plansza); | |
207 | break; | |
208 | case 2: | |
209 | exit(0); | |
210 | break; | |
211 | case 3: | |
212 | zmiana_koloru(rand() % 4); | |
213 | break; | |
214 | case 4: | |
215 | int dodanaPopulacja; | |
216 | cout << "Ile populacji chcesz dodac?" << endl; | |
217 | cin >> dodanaPopulacja; | |
218 | dodaj_populacje(plansza, dodanaPopulacja); | |
219 | liczbaPopulacji = policz_populacje(plansza); | |
220 | break; | |
221 | case 5: | |
222 | graj_dzwiek(liczbaPopulacji); | |
223 | break; | |
224 | ||
225 | ||
226 | default: | |
227 | cout << "Blad symulacji, nieznane polecenie" << endl; | |
228 | break; | |
229 | ||
230 | ||
231 | } | |
232 | ||
233 | ||
234 | } | |
235 | ||
236 | } |