Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- //Na kompilatorze online #include <stdio.h> zamiast <windows.h>
- using namespace std;
- void wyswietl(int tab[20][20])
- {
- for (int i = 0; i < 20; i++)
- {
- for (int j = 0; j < 20; j++)
- {
- if (tab[i][j] == 0)
- {
- cout << " ";
- }
- else
- {
- cout << "X";
- }
- }
- cout << endl;
- }
- }
- int policz_sasiadow(int tab[20][20], int i, int j)
- {
- int sasiedzi = 0;
- int gora;
- int dol;
- int srodekGoraDol;
- int prawo;
- int lewo;
- int srodekPrawoLewo;
- //pole znajduje się w pierwszym wierszu
- if (i == 0)
- {
- gora = 19;
- srodekGoraDol = 0;
- dol = 1;
- }
- //pole znajduje się w ostatnim wierszu
- else if (i == 19)
- {
- gora = 18;
- srodekGoraDol = 19;
- dol = 0;
- }
- //pole znajduje się w jednym z pozostałych wierszy
- else
- {
- gora = i - 1;
- srodekGoraDol = i;
- dol = i + 1;
- }
- //pole znajduje się w pierwszej kolumnie
- if (j == 0)
- {
- lewo = 19;
- srodekPrawoLewo = 0;
- prawo = 1;
- }
- //pole znajduje się w ostatniej kolumnie
- else if (j == 19)
- {
- lewo = 18;
- srodekPrawoLewo = 19;
- prawo = 0;
- }
- //pole znajduje się w jednej z pozostalych kolumn
- else
- {
- lewo = j - 1;
- srodekPrawoLewo = j;
- prawo = j + 1;
- }
- sasiedzi += tab[gora][lewo];
- sasiedzi += tab[srodekGoraDol][lewo];
- sasiedzi += tab[dol][lewo];
- sasiedzi += tab[gora][srodekPrawoLewo];
- sasiedzi += tab[dol][srodekPrawoLewo];
- sasiedzi += tab[gora][prawo];
- sasiedzi += tab[srodekGoraDol][prawo];
- sasiedzi += tab[dol][prawo];
- return sasiedzi;
- }
- void pokolenie(int tab[20][20])
- {
- int nowa_tab[20][20] = {0};
- for (int i = 0; i < 20; i++)
- {
- for (int j = 0; j < 20; j++)
- {
- int sasiedzi = policz_sasiadow(tab, i, j);
- //Żywa komórka, która ma mniej niż dwóch sąsiadów, w kolejnym kroku umiera.
- if (tab[i][j] == 1 && sasiedzi < 2)
- {
- nowa_tab[i][j] = 0;
- }
- //Żywa komórka, która ma więcej niż trzech sąsiadów, w kolejnym kroku umiera.
- else if (tab[i][j] == 1 && sasiedzi > 3)
- {
- nowa_tab[i][j] = 0;
- }
- //Żywa komórka, która ma dwóch lub trzech sąsiadów – przeżywa.
- else if (tab[i][j] == 1)
- {
- nowa_tab[i][j] = 1;
- }
- //Martwa komórka, która ma trzech żywych sąsiadów – w kolejnym kroku ożywa.
- else if (tab[i][j] == 0 && sasiedzi == 3)
- {
- nowa_tab[i][j] = 1;
- }
- }
- }
- for (int i = 0; i < 20; i++)
- {
- for (int j = 0; j < 20; j++)
- {
- tab[i][j] = nowa_tab[i][j];
- }
- }
- }
- int main()
- {
- int plansza[20][20] = {0};
- plansza[9][8] = 1;
- plansza[9][10] = 1;
- plansza[10][10] = 1;
- plansza[10][9] = 1;
- plansza[11][9] = 1;
- while (true)
- {
- system("cls");
- wyswietl(plansza);
- pokolenie(plansza);
- system("pause");
- }
- }
- int main()
- {
- int plansza[20][20] = {0};
- plansza[9][8] = 1;
- plansza[9][10] = 1;
- plansza[10][10] = 1;
- plansza[10][9] = 1;
- plansza[11][9] = 1;
- while (true)
- {
- system("cls");
- // kompilator online printf("\033[H\033[J");
- wyswietl(plansza);
- pokolenie(plansza);
- cout << "Wcisnij enter aby kontynuować"<<endl;
- system("pause");
- // kompilator online getchar();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement