Postanowiłem sobie napisać właśnie tą grę [na razie na planszy 4x4], problem prawdopodobnie tkwi gdzieś w funkcji: 'przewin()', wydaje mi się, że koncepcja jest dobra.
#include <iostream>
using namespace std;
int menu(int pole[][6]);
int ustaw(int pole[][6]);
int przewin(int pole[][6]);
int main()
{
int pole[6][6] = {};
menu(pole);
system("pause>nul");
return 0;
}
///// MENU Z PĘTLĄ ANTYBŁĘDNĄ
int menu(int pole[][6])
{
system("cls");
//// WYSWIETLANIE PLANSZY
for(int x = 1; x <= 4; ++x)
{
cout << endl;
for(int y = 1; y <= 4; ++y)
{
/// SPRAWDZANIE CZY ZYWA JEST KOMORKA
if(pole[x][y] == 1) cout << "#";
else cout << " ";
cout << "|";
}
cout << endl;
cout << "-+-+-+-+";
}
int wybor;
cout << "\n\nWybierz opcje: ";
cout << "\n1.Wybierz zywe pola";
cout << "\n2.Przewin ture" << endl;
cin >> wybor;
if(wybor == 1) { ustaw(pole); }
else if(wybor == 2) { przewin(pole); }
else {cout << "Nie ma takiej opcji"; system("pause>nul"); system("cls"); menu(pole);}
}
////// WYBÓR Z PĘTLĄ ANTYBŁĘDNĄ
int ustaw(int pole[][6])
{
int ax, ay;
system("cls");
cout << "Jesli komorka jest zywa to zostanie zniszczona,\njesli martwa to zostanie stworzona. (1-4)";
cout << "\nPodaj X: ";
cin >> ax;
if(ax < 1 || ax > 4) ustaw(pole);
cout << "\nPodaj Y: ";
cin >> ay;
if(ay < 1 || ay > 4) ustaw(pole);
/////// USTAWIANIE ISTNIENIA
if(pole[ay][ax] == 0) { pole[ay][ax] = 1; cout << "\nPole x: " << ax << " y: " << ay << " zostalo ozywione."; system("pause>nul");}
else { pole[ay][ax] = 0; cout << "\nPole x: " << ax << " y: " << ay << " zostalo zniszczone."; system("pause>nul");}
menu(pole);
}
int przewin(int pole[][6])
{
for(int y = 1; y <= 4; ++y)
{
for(int x = 1; x <= 4; ++x)
{
int licznik = 0; // ISTNIEJACYCH KOMóREK W OKOLICY
if(pole[x-1][y] == 1) licznik += 1;
if(pole[x][y-1] == 1) licznik += 1;
if(pole[x][y+1] == 1) licznik += 1;
if(pole[x+1][y-1] == 1) licznik += 1;
if(pole[x-1][y+1] == 1) licznik += 1;
if(pole[x-1][y-1] == 1) licznik += 1;
if(pole[x+1][y+1] == 1) licznik += 1;
if(pole[x][y] == 0)
{
if(licznik == 3) pole[x][y] = 1;
else pole[x][y] = 0;
}
else
{
if(licznik == 2 || licznik == 3) pole[x][y] = 1;
else pole[x][y] = 0;
}
}
}
system("pause>nul");
menu(pole);
}