Witam serdecznie,
Tworzę gierkę z użyciem biblioteki SDL. Śmigało wszystko jak należy, klasa z bohaterem(tzn. samolotem) działała jednak bez konstruktora(tzn. z konstruktorem domyślnym, bo i tak kompilator tworzy konstruktor). Dodałem go do klasy, program się skompilował, ale już się nie uruchamił. Zastanawiam się więc, gdzie jest błąd.
class ludek
{
float predkosc;
int acc;
bool Act[7];
pocisk bullet[7];
float x;
float y;
SDL_Surface * image = NULL;
SDL_Event event;
SDL_Rect position;
SDL_Rect scale;
SDL_Surface *load_image( std::string filename );
public:
ludek(float p, int a);
void blit(SDL_Surface * ekran);
void zaladuj();
void ruch(Uint8 * keystate);
void free();
void colorkey();
SDL_Rect scReturn();
SDL_Rect posReturn();
bool* actReturn();
void actChange(int);
void shoot(SDL_Surface * ekran);
};
ludek::ludek(float p, int a)
{
this->predkosc = p;
this->acc = a;
this->zaladuj();
this->colorkey();
for(int i = 0; i <= 7; i++)
Act[i] = false;
}
I metody użyte w konstruktorze:
void ludek::zaladuj()
{
image = load_image("hello.png");
position.y = 768-32;
position.x = 1;
scale.x = 0;
scale.y = 0;
scale.h = 32;
scale.w = 32;
}
void ludek::colorkey()
{
Uint32 colorkey = SDL_MapRGB(image->format,255,0,255);
SDL_SetColorKey(image, SDL_SRCCOLORKEY, colorkey);
}
I wywołanie konstruktora:
ludek ja(5,7);
Ogółem wygląda to tak, że jeśli konstruktor zostawię pusty, wartości pól ustalę poza nim i użyję powyższych metod w innym miejscu, to program się uruchomi i działa tak jak bym chciał, żeby działał, ale gdy go dodam, to program się kompiluje, ale nie uruchamia. Oczywiście można powiedzieć "skoro działa bez konstruktora, to z niego nie korzystaj", niestety to jest na projekt i wymagane jest, żeby klasy miały konstruktory. Uruchamianie programu poprzez .exeka też nic nie daje.
Moje środowisko programistyczne to Code::Blocks 13.12