Witam, mam pewien problem. Piszę prostą grę w życie i mam już prawie kompletny kod. Zatrzymałem się jednak w pewnym miejscu: przekazywaniu wartości komórek i jej sąsiadów do następnej tablicy która ma być wydrukowana. W funkcji main mam takie odwołanie:
wypisz_pokolenia(x,y,ip, tab1, tab_zmienna); (x,y wielkosc tablicy, ip - ilosc pokoleń, tab1 - tablica drukowana, tab_zmienna - tablica przechowujaca wartości do przekazania do tablicy drukowanej)
sama funkcja: (niestety długa bo i możliwości sporo, sens jednak głównie ten sam)
void wypisz_pokolenia(int x, int y, int ip, int **taba, int **tabb)
{
int i,j,m,licznik;
srand(time(NULL));
for (m=0;m<ip;m++)
{ /*petla 1 od m*/
clear();
for (i=0;i<y;i++)
{ /*petla for 2 (od i)*/
for (j=0;j<x;j++)
{ /*petla for 3 (od j)*/
licznik=0;
if (i==0 && j==0)
{ if (taba[i+1][j]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i+1][j+1]==1) licznik++;
}
else if (i==0 && j==x-1)
{ if (taba[i][j-1]==1) licznik++;
else if (taba[i+1][j]==1) licznik++;
else if (taba[i+1][j-1]==1) licznik++;
}
else if (i==y-1 && j==0)
{ if (taba[i-1][j]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i-1][j+1]==1) licznik++;
}
else if (i==y-1 && j==x-1)
{ if (taba[i-1][j]==1) licznik++;
else if (taba[i][j-1]==1) licznik++;
else if (taba[i-1][j-1]==1) licznik++;
}
else if (i==0 && j!=0 && j!=x-1)
{ if (taba[i][j-1]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i+1][j-1]==1) licznik++;
else if (taba[i+1][j+1]==1) licznik++;
else if (taba[i+1][j]==1) licznik++;
}
else if (i==y-1 && j!=0 && j!=x-1)
{ if (taba[i][j-1]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i-1][j-1]==1) licznik++;
else if (taba[i-1][j+1]==1) licznik++;
else if (taba[i-1][j]==1) licznik++;
}
else if (i!=0 && i!=y-1 && j==0)
{ if (taba[i-1][j]==1) licznik++;
else if (taba[i+1][j]==1) licznik++;
else if (taba[i+1][j+1]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i-1][j+1]==1) licznik++;
}
else if (i!=0 && i!=y-1 && j==x-1)
{ if (taba[i-1][j]==1) licznik++;
else if (taba[i+1][j]==1) licznik++;
else if (taba[i+1][j-1]==1) licznik++;
else if (taba[i][j-1]==1) licznik++;
else if (taba[i-1][j-1]==1) licznik++;
}
else if (i!=0 && i!=y-1 && j!=0 && j!=x-1)
{ if (taba[i+1][j-1]==1) licznik++;
else if (taba[i+1][j]==1) licznik++;
else if (taba[i+1][j+1]==1) licznik++;
else if (taba[i][j-1]==1) licznik++;
else if (taba[i][j+1]==1) licznik++;
else if (taba[i-1][j-1]==1) licznik++;
else if (taba[i-1][j]==1) licznik++;
else if (taba[i-1][j+1]==1) licznik++;
}
if (taba[i][j]==1 && (licznik==2 || licznik==3)) tabb[i][j]=1;
else if (taba[i][j]==0 && licznik==3) tabb[i][j]=1;
else tabb[i][j]=0;
} /*petla for 3 (od j)*/
}/*petla for 2 (od i)*/
for (i=0;i<y;i++)
{
for(j=0;j<x;j++)
{
taba[i][j] = tabb[i][j];
}
}
wypisz_macierz(x,y,taba);
refresh();
sleep(1);
} /*petla 1 od m */
}
Na końcu funcka wypisz_macierz :
void wypisz_macierz(int x, int y, int **tab)
{
int i,j;
for(i=0; i<y; i++)
{
for(j=0; j<x; j++)
{
if (tab[i][j]==1) printw("0");
else printw("*");
}
printw("\n");
}
}
Problem jest taki że każda kolejna tablica jest wyzerowana i drukuje jedynie zera (a w moim programie *). Jak przekazać wartości tablicy do nowej by dobrze zostały wydrukowane?
dodałem tagi <code>