Witam, serdecznie.
Streszczę krótko program:
- Gra Monopoly/Eurobiznes (każdy wie o co chodzi)
- Gra oparta na liście dwukierunkowej, z dziedziczeniem, polimorfizm etc.
Stworzyłem sobie zestaw klas. Każda opisuje inne Pola w Grze, mamy np. Miasto, Koleje, Szanse, Pola unikalne (Start, Podatek, Wiezienie) etc. Każda klasa ma w sobie swój własny konstruktor, który ustala nasze wartości jak Cena Zakupu, Sprzedazy, Ile domów etc.
I teraz jak to wszystko zaimplementować w LISTĘ DWUKIERUNKOWĄ, która przechowuje jak wiadomo element, jednego typu.
A ja mam 40 obiektów (tyle pól w grze) jak je przechowywać w jednej LIŚCIE, żeby później sprawnie się na niej obsługiwać i odwoływać do danych. Kombinowałem i kombinowałem bezsensownie. Ale nic z tego.
Mam sobie takie klasy
//--------LISTA DWUKIERUKOWA-----------------------------------------------------------------------
//--------------------------
class ElementListy {
public:
PUSTE POLE ! TU WLASNIE MUSZE ZADEKLAROWAC "COŚ" CO BEDE DODAWAŁ !
ElementListy *nast, *pop;
};
//---------------------------
class CLista {
public:
ElementListy *pocz, *kon, *nowy;
CLista(){pocz=NULL;}
void DodajElement(CMiasto *wsk, CSpecjalne *wsk2,int x)
{
nowy = new ElementListy;
nowy->pop = NULL;
nowy->nast = NULL;
if(pocz==NULL){ pocz=nowy; kon=nowy; }
else { nowy->pop = kon; kon->nast = nowy; }
kon=nowy;
}
A tak przykładowo wygląda jeden obiekt klasy Miasta, wywoływany z konstruktorem.
CMiasto(2,"Saloniki","Grecja",120,100,5,40,60,180,320,500,80,60);
Chcę takie coś dodawać do listy.
Ale mam też coś takiego, obiekt klasy Pola Podatku, który jest INNYM obiektem i też chciałbym żeby był TAKIM samym elementem listy dwukierunkowej.
CSpecjalne(39,"Podatek od nieruchmosci",200);
Mam nadzieję, że ktoś zrozumie w czym rzecz, dzięki.