Witam wszystkich!
Na wstępie zaznaczam, że dopiero raczkuję w C++ i obiektowości, dlatego z góry przepraszam za wszelkie rażące błędy w moim kodzie. Piszę właśnie projekt na zaliczenie, którego tematem są warcaby. Prosiłbym o pomoc czy naprowadzenie mnie na odpowiedni tor. Czasu zostało mało, dlatego proszę o wszelką pomoc.
Następujący fragment kodu sprawia trudności:
#include <iostream>
#include <stdio.h>
#include <cstdlib>
using namespace std;
class Plansza;
enum Typy{
brak,
pionek,
damka
};
enum Kolory{
zaden,
bialy,
czarny
};
class Pionki{
protected:
int typ;
int kolor;
public:
Pionki(){ typ = brak; kolor = brak; };
~Pionki(){};
Pionki(int a, int b){
typ = a;
kolor = b;
};
};
class Pionek:Pionki{
protected:
int pozycja_x;
int pozycja_y;
public:
Pionek():Pionki(){
pozycja_x=0;
pozycja_y=0;
};
~Pionek(){};
Pionek(int a, int b, int a1, int a2):Pionki(a,b){
pozycja_x = a1;
pozycja_y = a2;
};
int get_kolor(){
return kolor;
};
int get_typ(){
return typ;
};
void ustaw_damke(){
typ = damka;
};
Pionek ustaw_pionek(int a, int b, int a1, int a2){
Pionek ppion(a, b, a1, a2);
return ppion;
};
void zbij_pionek(Pionek *ppion){
delete ppion;
};
void reset(){
typ = brak;
kolor = brak;
};
};
class Plansza{
protected:
int rozmiar_x;
int rozmiar_y;
Pionek plansza[8][8];
public:
Plansza(){
rozmiar_x = 8;
rozmiar_y = 8;
};
~Plansza(){};
void ustaw_plansze_start(){
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
if (i<2 && (i+j)%2== 1){
plansza[i][j].ustaw_pionek(pionek,czarny,i,j);
}
else plansza[i][j].ustaw_pionek(brak,brak,i,j);
if (j>=5 && (i+j)%2== 1){
plansza[i][j].ustaw_pionek(pionek, bialy, i, j);
}
else plansza[i][j].ustaw_pionek(brak,brak,i,j);
}
}
};
void rysuj_plansze(){
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
if(plansza[i][j].get_kolor()==czarny) // get_kolor nie zwraca
cout << 2;
if(plansza[i][j].get_kolor()==bialy && plansza[i][j].get_typ()==pionek)
cout << 1;
if(plansza[i][j].get_kolor()==brak && plansza[i][j].get_typ()==brak)
cout << 0;
}
cout << endl;
}
};
};
int main(){
Plansza *pwsk = NULL;
pwsk = new Plansza();
pwsk->ustaw_plansze_start();
pwsk->rysuj_plansze();
delete pwsk;
cout << endl;
system("PAUSE");
return 0;
}
Problemem jest to, że nie działa mi metoda get_kolor() na rzecz obiektu plansza[i][j]. Zrobiłem sobie mały test w mainie, żeby zobaczyć co jest nie tak i wygląda na to, że kompilatorowi bardzo nie podoba się obecność tej tablicy dwuwymiarowej. To samo na tablicy jednowymiarowej. Na zwyklym obiekcie typu Pionek wszystko działa. Problem zapewne trywialny, lecz trudno mi posunąć się dalej...
Proszę o pomoc. Dziękuję. Pozdrawiam.