Witam,
Mam za zadanie napisać program warcaby, ale bez żadnej sztucznej inteligencji. Po prostu ma to być dla 2 graczy. I ma to być w konsoli. Z językiem C++ dopiero zaczynam przygodę. Wcześniej było Delphi i Java. Ale dobra, przejdźmy do sedna. Otóż stworzyłem klasę CPionek, wygląda ona na razie tak:
class CPionek
{
private:
int kolor; // 0 - bialy, 1 - czarny
bool dama; // czy pionek jest dama?
public:
CPionek(int k);
int GetKolor();
bool GetDama();
void Ruch();
};
A tu jej implementacja:
CPionek::CPionek (int k):
kolor(k),
dama(false)
{
};
int CPionek::GetKolor()
{
return kolor;
};
bool CPionek::GetDama()
{
return dama;
};
Więc jak na razie nic szczególnego jeszcze tu nie ma. Ale mam problem ze stworzeniem tablicy obiektów z klasy CPionek, która będzie moją planszą. Robię to tak:
CPionek** plansza;
#pragma argsused
int main(int argc, char* argv[])
{
plansza = new CPionek* [N];
for(int i=0;i<N;i++)
plansza[i] = new CPionek [N];
getch();
return 0;
}
Przy próbie kompilacji wyskakuje mi taki oto błąd:
[C++ Error] Main.cpp(22): E2248 Cannot find default constructor to initialize array element of type 'CPionek'
Czyli nie może znaleźć domyślnego konstruktora. Gdy stworzyłem mu domyślny konstruktor:
CPionek::CPionek()
{
};
to wszystko zadziałało, stworzyła się tablica dwuwymiarowa, jednak mi zależało, żeby była ona w całości wypełniona NULLami. Bo teraz gdy próbuję z jakiegoś pola wyciągnąć kolor to wyświetla się wartość 0. Przy próbie przypisania NULL do wszystkich pól tablicy, a następnie przy prostym sprawdzeniu:
if (plansza[1][2]==NULL)
{
std::cout << "null";
}
wyskakuje błąd:
[C++ Error] Main.cpp(33): E2094 'operator==' not implemented in type 'CPionek' for arguments of type 'int'
Nie wiem za bardzo jak sobie z tym poradzić. A wiadomo, że w warcabach pionki nie stoją na wszystkich polach, więc potrzebne to będzie do sprawdzania, czy na danym polu stoi pionek, czy nie. Jeżeli nie ma tam pionka to chcę, aby można było to spradzić przez przyrównanie do NULLa, bo chyba tak najlepiej. A może ktoś ma jakiś inny pomysł na rozwiązanie tego. Bardzo proszę o pomoc.