[C++ Allegro]Bitmapa znika, a nie powinna, zły warunek

Witam. Mam problem, potrzebuję wyświetlić pewną bitmapę w Allegro, która powinna zniknąć po wciśnięciu spacji, jednak nie działa to tak, jak powinno.

Gdy napiszę:

if (kolizja(x, y, 30, 30, zwierz_x, zwierz_y, 30, 30)==true)

          {

               if (key[KEY_SPACE])

               {

                                  zwierz = load_bmp ("pliki/grafika/zwierz_zdechl.bmp", default_palette);

                                  pz -= 50;

                                  zwierz_zywy = 0;

               }

          }


[...]


          else if (zwierz_zywy==0)

          {

               ramka = load_bmp("pliki/grafika/ramka.bmp",default_palette);

               masked_blit (ramka, bufor, 0, 0, 170, 90, ramka->w, ramka->h);

               textout_ex (bufor, font, "Zabiles zwierza! Jestes wielkim wojownikiem!", 197, 95, makecol(0, 0, 0), -1);


               if (key[KEY_SPACE])

               {

                                  ramka = load_bmp ("pliki/grafika/pupa.bmp", default_palette);

                                  destroy_bitmap(ramka);

                                  zwierz_zywy=2;

               }

          }

to bitmapa o nazwie ramka wyświetli się i nie zniknie do czasu wciśnięcia spacji. By jednak poprawić pewien błąd w programie, muszę zapisać to w taki sposób:

if (kolizja(x, y, 30, 30, zwierz_x, zwierz_y, 30, 30)==true && zwierz_zywy==1)

          {

               if (key[KEY_SPACE])

               {

                                  zwierz = load_bmp ("pliki/grafika/zwierz_zdechl.bmp", default_palette);

                                  pz -= 50;

                                  zwierz_zywy = 0;

               }

          }


[...]


          else if (zwierz_zywy==0)

          {

               ramka = load_bmp("pliki/grafika/ramka.bmp",default_palette);

               masked_blit (ramka, bufor, 0, 0, 170, 90, ramka->w, ramka->h);

               textout_ex (bufor, font, "Zabiles zwierza! Jestes wielkim wojownikiem!", 197, 95, makecol(0, 0, 0), -1);


               if (key[KEY_SPACE])

               {

                                  ramka = load_bmp ("pliki/grafika/pupa.bmp", default_palette);

                                  destroy_bitmap(ramka);

                                  zwierz_zywy=2;

               }

          }

jednak wtedy bitmapa o nazwie ramka pojawia się na ułamek sekundy po czym znika. Czy mógłby ktoś pomóc mi rozwiązać ten problem?

c++ było dawno… ale chyba trzeba wpisac warunek aby program czekał na wciśniecie klawisza. Chyba funkcja getch(), czy getchar() + do tego import odpowiedniej biblioteki ale juz nie pamietam ktorej

Tylko zauważ, że ja nie mam problemu z okienkiem konsoli, ponieważ nie piszę aplikacji konsolowej,a graficzną i żaden getchar() mi tu nic nie zmieni, problemem jest bitmapa, nie konsola, której nawet niema, bo nie jest tu potrzebna.

if (key[KEY_SPACE]) nie czeka do naciśnięcia spacji, tylko sprawdza czy spacja jest wciśnięta. Więc jeżeli spacja nie jest wciśnięta, to program poleci dalej i nie zauważy problemu.

To co ciebie interesuje to readkey, który czeka na wciśnięcie klawisza.