- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- int main()
- {
- //int kolumny;
- //int wiersze;
- /*
- cout << "podaj ilosc kolumn: " << endl;
- cin >> kolumny;
- cout << "podaj ilosc wierszy: " << endl;
- cin >> wiersze;
- string ** plansza = new string *[wiersze];
- for (int i = 0; i < wiersze; i++)
- {
- plansza[i] = new string[kolumny];
- }
- */
- //ilość wierszy: 12
- //ilość kolumn: 20
- /*
- ....................
- ....................
- ....................
- ....................
- .......X.XX.........
- .......XXX..........
- ........X...........
- ....................
- ....................
- ....................
- ....................
- ....................
- */
- string plansza[12];
- fstream plik;
- plik.open("gra.txt");
- for (int i = 0; i < 12; i++)
- {
- plik >> plansza[i];
- //cout << plansza[i] << endl;
- }
- string pokolenieprzed[12];
- string pokoleniepo[12][20];
- for (int i = 0; i < 12; i++)
- {
- pokolenieprzed[i]=plansza[i];
- //cout << pokolenieprzed[i] << endl;
- }
- for (int i = 0; i < 37; i++)
- {
- cout << "Pokolenie " << i + 1 << ":" << endl;
- for (int j = 0; j < 12; j++) cout << pokolenieprzed[j]<<endl;
- for (int j = 0; j < 12; j++)
- {
- for (int k = 0; k < 20; k++)
- {
- int licznikzyw = 0;
- //PIONOWA
- //góra
- if (j - 1 < 0) { if (pokolenieprzed[11][k] == 'X') licznikzyw++; }
- else { if (pokolenieprzed[j - 1][k] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //dół
- if (j + 1 == 12) { if (pokolenieprzed[0][k] == 'X') licznikzyw++; }
- else { if (pokolenieprzed[j + 1][k] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //POZIOMA
- //lewa
- if (k - 1 < 0) { if (pokolenieprzed[j][19] == 'X') licznikzyw++; }
- else { if (pokolenieprzed[j][k - 1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //prawa
- if (k + 1 == 20) { if (pokolenieprzed[j][0] == 'X') licznikzyw++; }
- else { if (pokolenieprzed[j][k + 1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //SKOSY
- //góra-lewa
- if (j - 1 < 0 && k - 1 < 0) { if (pokolenieprzed[11][19] == 'X') licznikzyw++; }
- if (j - 1 < 0 && k - 1 >= 0) { if (pokolenieprzed[11][k-1] == 'X') licznikzyw++; }
- if (j - 1 >= 0 && k - 1 < 0) { if (pokolenieprzed[j-1][19] == 'X') licznikzyw++; }
- if (j - 1 >= 0 && k - 1 >= 0) { if (pokolenieprzed[j-1][k-1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //góra-prawa
- if (j - 1 < 0 && k + 1 == 20) { if (pokolenieprzed[11][0] == 'X') licznikzyw++; }
- if (j - 1 < 0 && k + 1 < 20) { if (pokolenieprzed[11][k + 1] == 'X') licznikzyw++; }
- if (j - 1 >= 0 && k + 1 == 20) { if (pokolenieprzed[j - 1][0] == 'X') licznikzyw++; }
- if (j - 1 >= 0 && k + 1 < 20) { if (pokolenieprzed[j - 1][k + 1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //dół-lewa
- if (j + 1 == 12 && k - 1 < 0) { if (pokolenieprzed[0][19] == 'X') licznikzyw++; }
- if (j + 1 == 12 && k - 1 >= 0) { if (pokolenieprzed[0][k - 1] == 'X') licznikzyw++; }
- if (j + 1 < 12 && k - 1 < 0) { if (pokolenieprzed[j + 1][19] == 'X') licznikzyw++; }
- if (j + 1 < 12 && k - 1 >= 0) { if (pokolenieprzed[j + 1][k - 1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //dół-prawa
- if (j + 1 == 12 && k + 1 == 20) { if (pokolenieprzed[0][0] == 'X') licznikzyw++; }
- if (j + 1 == 12 && k + 1 < 20) { if (pokolenieprzed[0][k + 1] == 'X') licznikzyw++; }
- if (j + 1 < 12 && k + 1 == 20) { if (pokolenieprzed[j + 1][0] == 'X') licznikzyw++; }
- if (j + 1 < 12 && k + 1 < 20) { if (pokolenieprzed[j + 1][k + 1] == 'X') licznikzyw++; }
- //cout << licznikzyw << " ";
- //PODSUMOWANIE
- if (licznikzyw == 3) pokoleniepo[j][k] = 'X';
- if (licznikzyw != 3 && licznikzyw != 2) pokoleniepo[j][k] = '.';
- }
- }
- for (int j = 0; j < 12; j++)
- {
- string linijka;
- for (int k = 0; k < 20; k++)
- {
- linijka = linijka + pokoleniepo[j][k];
- }
- pokolenieprzed[j] = linijka;
- }
- }
- system("PAUSE");
- return 0;
- }