@Rafael/ARMO, post #30
@Rafael/ARMO, post #30
@abcdef, post #29
@GumBoy, post #32
@jimiche, post #33
@Minniat, post #1
@rzookol, post #38
@rzookol, post #7
class icon
{
private:
UWORD icontype; // rodzaj ikonki
struct BitMap iconbm; // bitmapa ikonki
public:
icon();
void Create_Icon(UWORD type, struct BitMap bm);
void Draw_Icon(int x, int y);
UWORD Obtain_Icontype();
};
class map
{
private:
icon map[64][64]; // mapka składająca się z ikonek
public:
map();
void Generate_Map(int seed);
void Load_Map(int file);
void Draw_Map(int startx, int starty);
icon Obtain_Icon(int x, int y);
void Set_Icon(int x, int y, icon icon);
};
icon :: icon()
{
// Konstruktor, tworzy domyślną ikonę
}
void icon :: Create_Icon(UWORD type, struct BitMap bm)
{
// akcesor, ustawia typ i bitmapę ikony
}
void icon :: Draw_Icon(int x, int y)
{
// Rysuje ikonkę o podanym typie w pozycji x, y
}
UWORD icon :: Obtain_Icontype()
{
// akcesor typu ikonki
}
map :: map()
{
// konstruktor, tworzy czystą mapę
}
void map :: Generate_Map(int seed)
{
// akcesor, generuje mapkę przypisaną danemu numerowi seed
}
void map :: Load_Map(int file)
{
// akcesor, wczytuje mapkę z pliku o numerze file
}
void map :: Draw_Map(int startx, int starty)
{
// Rysuje mapkę w oknie w bieżącej pozycji
}
icon map :: Obtain_Icon(int x, int y)
{
// Akcesor ikony w podanej pozycji
}
void map :: Set_Icon(int x, int y, icon icon)
{
// Wstawia ikonę w podanej pozycji
}Implementacja jest banalna (oprócz generowania losowego mapy). Rysowanie ikony to po prostu BltBitMapRastPort() z BitMapy ikony na RastPort okna. Bardzo proszę o konstruktywne komentarze. Pytam też czy to dobry pomysł umieszczania tutaj fragmentów kodu - myślę, że lepiej jak będę umieszczał kod na mojej stronie, a tutaj podawał tylko odnośniki.@GumBoy, post #32
@Rafael/ARMO, post #41
@Minniat, post #40
@MinisterQ, post #43
@Rafael/ARMO, post #45
@Rafael/ARMO, post #44
@Minniat, post #47
@jimiche, post #25
@SzaryWilk, post #49
@Minniat, post #48
class icontype // rodzaj ikony (np. piach, skała itp.)
{
private:
UWORD iconnum; // numer rodzaju ikony
struct BitMap iconbm; // bitmapa ikony (do rysowania)
public:
icontype();
void Create_Icontype(int num, struct BitMap bm); // tworzy nowy rodzaj ikony
void Draw_Icontype(int x, int y); // rysuje ikonę w podanej pozycji
UWORD Obtain_Iconnum(); // pobiera numer rodzaju ikony
};
class icon // ikona (np. element mapy)
{
private:
icontype *type; // wskaźnik do rodzaju ikony
public:
icon();
void Set_Icontype(icontype *newtype); // ustawia wskaźnik do rodzaju ikony
icontype *Obtain_Icontype(); // pobiera wskaźnik do rodzaju ikony
};Przykład wykorzystania klas:void icontest()
{
icon newicon; // nowa ikonka
icontype rock, *newicontype; // skała i typ nowej ikony
struct BitMap rockbm; // bitmapa skały
rock.Create_Icontype(1, rockbm); // utwórz nowy typ ikony - skała
newicon.Set_Icontype(&rock); // ustaw typ nowej ikony na skałę
newicontype = newicon.Obtain_Icontype(); // pobierz typ nowej ikony
newicontype->Draw_Icontype(0, 0); // narysuj nową ikonę
}Implementacja metod jest prosta. Teraz kod przykładowy kompiluje się bez problemów. Pozdrawiam :)@selur, post #53
@GumBoy, post #46
@selur, post #56
@Minniat, post #57
@Minniat, post #57