Witam, po kilkugodzinnej walce z błędem szukam wsparcia na zewnątrz. Tworzę grę w oparciu o stawianie pionów na dynamicznej tablicy dwuwymiarowej, wszystko jest ok do momentu sprawdzania warunków zwycięstwa (szukanie rzędu 5 takich samych pionów poziomo, pionowo, lub na skos) - program wysypuje się po próbie umieszczenia pionu w ostatnim wierszu. Sądzę że błąd tkwi gdzieś w owym warunkach gdyż bez nich wszystko działa bez zarzutu. Zastanawia mnie, czy jeśli przepełniają się tablice, to dlaczego problem pojawia się tylko w ostatnim wierszu, a nie np. w przedostatnim itd. Niżej fragmenty kodu:
//Tworzenie dynamicznej tablicy
char** tab = new char *[x];
for(int i=0; i<x; i++)
{
tab[i]=new char [x];
for(int j=0; j<x; j++)
{
tab[i][j]='.';
}
}
//Funkcja sprawdzająca warunki zwycięstwa
void zwyciestwo(char **tab, /*int w, int k,*/ int roz)
{
int i, j;
for(i=0; i<roz; i++)
{
for(j=0; j<roz; j++)
{
if((tab[i][j]=='X' && tab[i][j+1]=='X' && tab[i][j+2]=='X' && tab[i][j+3]=='X' && tab[i][j+4]=='X')||\
(tab[i][j]=='X' && tab[i+1][j]=='X' && tab[i+2][j]=='X' && tab[i+3][j]=='X' && tab[i+4][j]=='X')||\
(tab[i][j]=='X' && tab[i+1][j+1]=='X' && tab[i+2][j+2]=='X' && tab[i+3][j+3]=='X' && tab[i+4][j+4]=='X')||\
(tab[i][j]=='X' && tab[i+1][j-1]=='X' && tab[i+2][j-2]=='X' && tab[i+3][j-3]=='X' && tab[i+4][j-4]=='X'))
{
cout << ("\n\nKONIEC! Gracz X wygral\n");
}
else if((tab[i][j]=='O' && tab[i][j+1]=='O' && tab[i][j+2]=='O' && tab[i][j+3]=='O' && tab[i][j+4]=='O')||\
(tab[i][j]=='O' && tab[i+1][j]=='O' && tab[i+2][j]=='O' && tab[i+3][j]=='O' && tab[i+4][j]=='O')||\
(tab[i][j]=='O' && tab[i+1][j+1]=='O' && tab[i+2][j+2]=='O' && tab[i+3][j+3]=='O' && tab[i+4][j+4]=='O')||\
(tab[i][j]=='O' && tab[i+1][j-1]=='O' && tab[i+2][j-2]=='O' && tab[i+3][j-3]=='O' && tab[i+4][j-4]=='O'))
{
cout << ("\n\nKONIEC! Gracz O wygral\n");
}
}
}