View difference between Paste ID: KTGezUw9 and yEbVy8SR
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
}