Piszę grę arkanoid (z pomocą openGL) i mam pewien problem.. Generalnie gra prawie działa, piłka lata, odbija się, ale nie zbija klocków.. do klocków wykorzystuję klasę cKlocek, która dziedziczy po cProstokat... cProstokat ma wszystkie funkcje sciany itd., a cKlocek ma dodatkowo atrybut odporność, która powinna spadac wraz z kolejnym zetknieciem się pilki z klockiem. Niestety funkcja dynamic_cast nie rozróżnia klocka od prostokąta. Podczas debugowania przydziela zarówno pierwszemu jak i drugiemu wartość NULL...
Wstawiam część kodu, którą opisuję. Jeśli pokazać jakąś klasę piszcie, ponieważ nie jestem w stanie wsadzić całego kodu, który jest zawarty w 16 plikach. Proszę o pomoc, ponieważ siedzę nad tym debugowaniem już drugi dzień.
void cScena::odbij()
{
for (int i = 0; i < tab.size(); i++)
{
for (int k = i + 1; k < tab.size(); k++)
{
if (tab[i]->Kolizja(*tab[k]))
{
cKlocek* klocek = dynamic_cast<cKlocek*>(tab[k]);
if (klocek != NULL){
cout << "x";
klocek->odjacOdpornosc();
}
}
}
}
}