Witam mam na zaliczenie napisać grę gółko i krzyżyk w C++, Już mam całą grę, jednak okazało się, że muszę do wyświetlania planszy użyć przeładowanego operatora <<. Do wyświetlania planszy mam funkcję void rysuj(); do której odwołuję się w kilku miejscach mojego programu. Jak mam zaimplementować przeładowanie tego operatora?
klasa kółko i krzyżyk:
class kik
{
protected:
int wymiar,wygrana, l_ruch;
char gracz,pc,znak;
char **plansza;
public:
kik();
kik(int _wymiar, int _wygrana,char _znak);
~kik();
void kik::si();
void kik::rysuj();
void kik::ruch_gracza();
void kik::ruch_pc();
bool kik::wygrywa_gracz();
bool kik::wygrywa_pc();
bool kik::remis();
}; //koniec klasy
Moja funkcja do wyświetlania:
void kik::rysuj()
{
system("cls");
for(int i = 1; i <= wymiar; i++)
cout << " " << i << " "; //wyswietlanie numerow kolumn
cout<<endl;
for(int i = 1; i <= wymiar; i++)
for(int j = 1; j <= wymiar; j++)
{
if(plansza[j]==plansza[1])
cout <<i<< " " << plansza[i][j] << " "; //wyswietlanie numerow wierszy
else cout<< " " << plansza[i][j] << " ";
if(j % wymiar)
cout << "|";
if(j%wymiar==0)
if(i==j)
cout<<endl;
else
{
cout<<endl;
for(int j=0;j<wymiar;j++)
{
if (j==0)
cout<<" ---+"; //w pierwszej kolumnie
if(j>0 && j<wymiar-1)
cout<<"---+"; //w pozostalych kolumnach
if(j==wymiar-1)
cout<<"---"; //w ostatniej kolumnie
}
cout<<endl;
}
}
}
Napisałem rysowanie planszy z przeładowaniem, tylko teraz nie wiem jak mam się do tego odwołać z innych funkcji.
ostream&operator<<(ostream&s,kik&c)
{
system("cls");
for(int i = 1; i <= c.wymiar; i++)
s << " " << i << " "; //wyswietlanie numerow kolumn
s<<endl;
for(int i = 1; i <= c.wymiar; i++)
for(int j = 1; j <= c.wymiar; j++)
{
if(c.plansza[j]==c.plansza[1])
s <<i<< " " << c.plansza[i][j] << " "; //wyswietlanie numerow wierszy
else s<< " " << c.plansza[i][j] << " ";
if(j % c.wymiar)
s << "|";
if(j%c.wymiar==0)
if(i==j)
s<<endl;
else
{
s<<endl;
for(int j=0;j<c.wymiar;j++)
{
if (j==0)
s<<" ---+"; //w pierwszej kolumnie
if(j>0 && j<c.wymiar-1)
s<<"---+"; //w pozostalych kolumnach
if(j==c.wymiar-1)
s<<"---"; //w ostatniej kolumnie
}
s<<endl;
}
}
return c;
}