Witajcie, piszę aktualnie grę Kółko i krzyżyk. Z założenia rozmiar planszy jest podawany przez użytkownika, tak samo jak ilość znaków w jednej linii, którą trzeba ułożyć, aby wygrać ( np.plansza 5x5, wygrywasz po ułożeniu 4 znaków w linii). Problem pojawia się przy sprawdzaniu, czy nastąpiła wygrana. Z założenia, funkcja ma sprawdzać, czy ilość takich samych znaków w pionie, poziomie, przekątnej \ i przekątnej / jest równa liczbie znaków wygrywających ( tu: zmienna ile). Niestety, przy pomocniczym wypisywaniu wartości zmiennych
poziom, pion,przek i przek_2
każda z tych zmiennych wynosi 0, nawet jeśli liczba wstawionych kółek czy krzyżyków jest większa niż liczba wygrywających.
Funkcja sprawdzająca wygraną:
bool wygrana(){
bool w_linii = false;
char znak = this->kto;
int poziom = 0, pion = 0, przek = 0, przek_2 = 0;
for( int i = 0; i < rozmiar; ++i )
{
for(int j=0;j>rozmiar;++j){
if(tablica[i][j]!=' '){
if( tablica[i][j]==tablica[i][j+1]) poziom++;
else if( tablica[i][j]==tablica[i+1][j]) ++pion;
else if( tablica[i][j]==tablica[i+1][j+1]) ++przek;
else if( tablica[i][ rozmiar-1-i]==tablica[i+1][rozmiar-1-(i+1)]) ++przek_2;
}
}
}
if(( poziom==ile ) ||( pion==ile ) ||( przek == ile ) ||( przek_2 == ile ) )
{
w_linii = true;
}
return w_linii;
}
Po przeczytaniu tematów na forum próbowałem również sprawdzać tylko w tej linii i kolumnie, do której wstawiono znak, jednak efekt jest taki sam. ( w - wiersz, k - kolumna )
if(tablica[i][j]!=' ')
{
if(tablica[this->w][i]==znak) ++poziom;
if(tablica[i][this->k]==znak) ++pion;
if(tablica[i][i]==znak) ++przek;
if(tablica[i][rozmiar-1-i]==znak) ++przek_2;
}
Z góry dziękuję za pomoc.