View difference between Paste ID: 4C1X6uJH and C9R3rn8i
SHOW: | | - or go back to the newest paste.
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
}