Gra w życie

Gra w Życie


//   | Opis gry:         |
//   | Dana jest dwuwymiarowa tablica 10x10 symbolizujaca komorki. Tablice nalezy      |
//   | losowo wypelnic cyframi 1 lub 0. Mozna przyjac, ze 0 oznacza martwa          |
//   | komorkę natomiast 1 zywa komorke. Typowa komorka ma 8 sasiadów         |
//   | (z lewej, z prawej, z gory, z dolu oraz czterech po skosach).   |
//   | Dana komorka zmienia swoj stan (zywa lub martwa) wg nastepujacych regul: |
//   | *komorka ozywa gdy ma dokladnie trzech zywych sasiadow    |
//   | *komorka pozostaje zywa gdy ma 2 lub 3 sasiadow     |
//   | *komorka umiera gdy ma mniej niz 2 sasiadow (umiera z samotnosci)  |
//   | *komorka umiera gdy ma wiecej niz 4 sasiadów (umiera z przeludnienia)  |
//    ----------------------------------------------------------------------------------
#include<iostream>
#include<time.h>
#include<stdio.h>
using namespace std;
int wyswietl(int tab[10][10]){
 int licznik=0;
 for(int i=0;i<10;i++){
  cout<<endl;
  for(int j=0;j<10;j++){
   if(tab[i][j]==1)licznik++;
   cout<<tab[i][j]<<" ";
  }
 }
 cout<<endl<<endl<<"Pozostalo przy zyciu "<<licznik<<" komorek"<<endl;
return 0;
}
int zmien(int tab[10][10]){
 for(int x=0;x<10;x++){
  for(int y=0;y<10;y++){
   int ilosc=0;
   if(tab[y][y]==0){
    if(tab[x][y-1]==1)ilosc++;
    if(tab[x-1][y]==1)ilosc++;
    if(tab[x-1][y-1]==1)ilosc++;   
    if(tab[x+1][y-1]==1)ilosc++;   
    if(tab[x+1][y]==1)ilosc++;    
    if(tab[x-1][y+1]==1)ilosc++;
    if(tab[x][y+1]==1)ilosc++;
    if(tab[x+1][y+1]==1)ilosc++;
    if(ilosc==3){
     tab[x][y]=1;
    }
   }
   if(tab[x][y]==1){
    if(tab[x][y-1]==1)ilosc++;
    if(tab[x-1][y]==1)ilosc++;
    if(tab[x-1][y-1]==1)ilosc++;   
    if(tab[x+1][y-1]==1)ilosc++;   
    if(tab[x+1][y]==1)ilosc++;    
    if(tab[x-1][y+1]==1)ilosc++;
    if(tab[x][y+1]==1)ilosc++;
    if(tab[x+1][y+1]==1)ilosc++;
    if(ilosc==2 || ilosc==3){
     tab[x][y]=1;
    }
    if(ilosc<2){
     tab[x][y]=0;
    }
    if(ilosc>=4){
     tab[x][y]=0;
    }
   }
  }
 }
 cout<<endl;
 wyswietl(tab);
 return 0;
}
int generuj(){
 int tab[10][10],licznik=0;
 srand(time(0));
 for(int i=0;i<10;i++){
  cout<<endl;
  for(int j=0;j<10;j++){
   tab[i][j]=rand()%2;
   if(tab[i][j]==1)licznik++;
   cout<<tab[i][j]<<" ";
  }
 }
 cout<<endl<<endl<<"Zywych komorek: "<<licznik;
 zmien(tab);
 return 0;
}
int main()
{
 generuj();
 cout<<endl;
 system("pause");
 return 0;
}