Witam!
Mam kłopot z grą - wszystko działa w momencie kiedy w kodzie mam umieszczony geth() - problem w tym, że wtedy cykl życia działa, ale trzeba wciskać jakiś klawisz żeby cykl trwał. Natomiast z pominięciem getch() kompletnie nic się nie dzieje, konsola pozostaje czarna. Próbowałem dołączyć do tego funkcję która spowoduje chwilowe zatrzymanie programu i po pewnym czasie cykl rusza, jednak również nie działało to bez geth().
Jak to poprawić?
#include <ncurses.h>
#include <ctime>
#include <cstdlib>
#include <unistd.h>
void zeruj (int tab[42][42])
{
for (int i=0 ; i<22 ; i++)
{
for (int l=0 ; l<22 ; l++)
{
tab[i][l] = 0;
}
}
}
void losuj (int tab[42][42])
{
for (int i=1 ; i<21 ; i++)
{
for (int l=1 ; l<21 ; l++)
{
tab[i][l] = (rand()%2)+0;
}
}
}
void wypisz (int tab[42][42])
{
for (int i=0 ; i<22 ; i++)
{
for (int l=0 ; l<22 ; l++)
{
if(tab[i][l]){
start_color(); //2
init_pair( 1, COLOR_BLACK, COLOR_RED ); //3
attron( COLOR_PAIR( 1 ) ); //4
printw( " " );
attroff( COLOR_PAIR( 1 ) );
}
else {
printw( " " );
}
}
printw("\n");
}
}
void sprawdz(int sprawdzana[42][42] , int przepisywana[42][42])
{
for (int w=1 ; w<21 ; w++)
{
for (int k=1 ; k<21 ; k++)
if (sprawdzana[w][k]) //żywa komórka
{
if (sprawdzana[w-1][k-1]+sprawdzana[w-1][k]+sprawdzana[w-1][k+1]+sprawdzana[w][k-1]+sprawdzana[w][k+1]+sprawdzana[w+1][k-1]+sprawdzana[w+1][k]+sprawdzana[w+1][k+1] == 3) przepisywana[w][k]=1;
else if (sprawdzana[w-1][k-1]+sprawdzana[w-1][k]+sprawdzana[w-1][k+1]+sprawdzana[w][k-1]+sprawdzana[w][k+1]+sprawdzana[w+1][k-1]+sprawdzana[w+1][k]+sprawdzana[w+1][k+1] == 2) przepisywana[w][k]=1;
else przepisywana[w][k]=0;
}
else //martwa komórka
{
if(sprawdzana[w-1][k-1]+sprawdzana[w-1][k]+sprawdzana[w-1][k+1]+sprawdzana[w][k-1]+sprawdzana[w][k+1]+sprawdzana[w+1][k-1]+sprawdzana[w+1][k]+sprawdzana[w+1][k+1] == 3) przepisywana[w][k]=1;
}
}
//zamiana tabel
for (int w=1 ; w<21 ; w++)
{
for (int k=1 ; k<21 ; k++)
sprawdzana[w][k] = przepisywana[w][k];
}
}
int main ()
{
int tab[42][42] , tab2[42][42];
initscr();
start_color();
zeruj(tab);
losuj(tab);
do {
wypisz(tab);
sprawdz(tab,tab2);
getch();
move(0,0);
} while (1==1);
endwin();
return 0;
}