wskaźniki problem

0

Witam.
Piszę grę w stylu arkanoid. Mam problem z resetem mapy. Używam allegro5. Na początku kod:

void cMap::make()
{
    bricks.clear();
    cMap::load();

    for(int i=0; i<total_amount; i++)
    {
        if(tiles[i])
        {
            int modulo = (i%w_amount);
            bricks.push_back(new cBrick(modulo*brick_w, (((int)i/w_amount)*brick_h), brick_w, brick_h));
        }
    }
}

tiles[] to dynamiczna tablica, która opisuje zawartość każdej części ekranu(0 - pustka, 1 - klocek), ustawiana za pomocą metody load()
bricks to wektor wskaźników na obiekty cBrick

bool cMap::check_coll(cBall *ball)
{

    for (unsigned int i=0; i<bricks.size(); i++)
    {
        if(bricks[i]->check_coll(ball))
        {
            tiles[i] = 0;
            bricks.erase(bricks.begin()+i);
            return TRUE;
        }
    }
    return FALSE;
}

Po wykryciu kolizji usuwany jest klocek, który ją spowodował.

Generalnie wszystko działa dobrze, aż do restartu mapy(np. po 3 zniszczeniach piłki) , czyli powtórnego wywołania metody cMap::make();
Obraz się wtedy 'zawiesza', ale logika działa tak, jak ma działać(np. dostaje w konsoli informacje o kolizji), eventy z klawiatury również są wciąż obsługiwane. Dodam jeszcze, że podczas wywołania metody cMap::make(), klocki nie są wyświetlane, a w dekonstruktorze cBrick usuwam bitmapę, którą zajmował.

Problem tkwi w linii:[code]bricks.push_back(new cBrick(modulo*brick_w, (((int)i/w_amount)*brick_h), brick_w, brick_h));[/code]

Po jej usunięciu wszystko odbywa się prawidłowo, tyle, że mapa nie jest zrobiona.
Nie pomaga także stworzenie nowego wskaźnika na cMap i wywołanie jego metody make().
Gdy ustawiam nowy wskaźnik w tym samym miejscu w pętli głównej, efekt jest taki sam.
Proszę o pomoc w rozwiązaniu problemu :)

0

Debuguj. Poustawiaj sobie breakpointy w dobrych miejscach, pooglądaj czy zmienne mają prawidłowe wartości.

Problem wcale nie musi tkwić w tej linii. Może być w każdej innej, na którą ta ma wpływ. Np. w tych częściach, które odpowiadają za wyświetlanie. Skoro zresztą logika działa a grafika nie, to w niej szukałbym problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1