Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<stdio.h>
- using namespace std;
- const int rozmiar = 20;
- void wyswietl(int tab[rozmiar][rozmiar])
- {
- for (int i = 0; i < rozmiar; i++)
- {
- for (int j = 0; j < rozmiar; j++)
- {
- if (tab[i][j] == 0)
- {
- cout << " ";
- }
- else
- {
- cout << "X";
- }
- }
- cout << endl;
- }
- }
- int policz_sasiadow(int tab[rozmiar][rozmiar], int i, int j)
- {
- int sasiedzi = 0;
- int gora;
- int dol;
- int srodekGoraDol;
- int prawo;
- int lewo;
- int srodekPrawoLewo;
- if (i == 0)
- {
- gora = rozmiar - 1;
- srodekGoraDol = 0;
- dol = 1;
- }
- else if (i == rozmiar - 1)
- {
- gora = rozmiar - 2;
- srodekGoraDol = rozmiar - 1;
- dol = 0;
- }
- else
- {
- gora = i - 1;
- srodekGoraDol = i;
- dol = i + 1;
- }
- if (j == 0)
- {
- lewo = rozmiar - 1;
- srodekPrawoLewo = 0;
- prawo = 1;
- }
- else if (j == rozmiar - 1)
- {
- lewo = rozmiar - 2;
- srodekPrawoLewo = rozmiar - 1;
- prawo = 0;
- }
- 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[rozmiar][rozmiar])
- {
- int nowa_tab[rozmiar][rozmiar]={0};
- for (int i = 0; i < rozmiar; i++)
- {
- for (int j = 0; j < rozmiar; j++)
- {
- int sasiedzi = policz_sasiadow(tab, i, j);
- if (tab[i][j] == 1 && sasiedzi < 2)
- {
- nowa_tab[i][j] = 0;
- }
- else if (tab[i][j] == 1 && sasiedzi > 3)
- {
- nowa_tab[i][j] = 0;
- }
- else if (tab[i][j] == 1)
- {
- nowa_tab[i][j] = 1;
- }
- else if (tab[i][j] == 0 && sasiedzi == 3)
- {
- nowa_tab[i][j] = 1;
- }
- }
- }
- for (int i = 0; i < rozmiar; i++)
- {
- for (int j = 0; j < rozmiar; j++)
- {
- tab[i][j] = nowa_tab[i][j];
- }
- }
- }
- void dodaj_populacje(int tab[rozmiar][rozmiar], int ilosc)
- {
- for (int i = 0; i < ilosc; i++)
- {
- tab[rand() % rozmiar][rand() % rozmiar] = 1;
- }
- }
- void graj_dzwiek()
- {
- cout<<"\a";
- }
- int policz_populacje(int tab[rozmiar][rozmiar])
- {
- int rozmiarPopulacji = 0;
- for (int i = 0; i < rozmiar; i++)
- {
- for (int j = 0; j < rozmiar; j++)
- {
- rozmiarPopulacji += tab[i][j];
- }
- }
- return rozmiarPopulacji;
- }
- void zmiana_koloru(int kolor)
- {
- if (kolor == 0)
- {
- printf("\033[34m");
- printf("\033[41m");
- }
- else if (kolor == 1)
- {
- printf("\033[31m");
- printf("\033[44m");
- }
- else if (kolor == 2)
- {
- printf("\033[35m");
- printf("\033[40m");
- }
- else if (kolor == 3)
- {
- printf("\033[30m");
- printf("\033[45m");
- }
- }
- int main()
- {
- int plansza[rozmiar][rozmiar] = { 0 };
- int nrPokolenia = 0;
- int liczbaPopulacji = 0;
- plansza[9][8] = 1;
- plansza[9][10] = 1;
- plansza[10][10] = 1;
- plansza[10][9] = 1;
- plansza[11][9] = 1;
- printf("\033[32m");
- printf("\033[47m");
- int wybor;
- while (true)
- {
- printf("\033[H\033[J");
- liczbaPopulacji = policz_populacje(plansza);
- cout << "Numer pokolenia: " << nrPokolenia << " ilosc osobnikow: " << liczbaPopulacji << endl;
- wyswietl(plansza);
- cout << endl << endl;
- cout << "Co chcesz zrobic?" << endl;
- cout << "1-Kolejne pokolenie" << endl;
- cout << "2-Zakoncz symulacje" << endl;
- cout << "3-Zmien kolor" << endl;
- cout << "4-Dodaj populacje" << endl;
- cout << "5-Zagraj dzwiek pokolenia" << endl;
- cin >> wybor;
- switch (wybor)
- {
- case 1 :
- nrPokolenia++;
- pokolenie(plansza);
- break;
- case 2:
- exit(0);
- break;
- case 3:
- zmiana_koloru(rand() % 4);
- break;
- case 4:
- int dodanaPopulacja;
- cout << "Ile populacji chcesz dodac?" << endl;
- cin >> dodanaPopulacja;
- dodaj_populacje(plansza, dodanaPopulacja);
- liczbaPopulacji = policz_populacje(plansza);
- break;
- case 5:
- graj_dzwiek();
- break;
- default:
- cout << "Blad symulacji, nieznane polecenie" << endl;
- break;
- }
- }
- }
Add Comment
Please, Sign In to add comment