Pętla do gier (np. Snake) (Biblioteka Allegro)

0

Witam...
Mam pewien problem chciałbym napisać grę typu Snake lub PacMan w c++ + biblioteka allegro, ale nie potrafię zrobić pętli która np.

Poniższy kod pokazuje pętle w której naciskając jakąś strzałkę program rysuje pikselem w danym kierunku o jeden piksel. A potrzebuję program którym po jednym naciśnięciu w dół będzie rysowała się linia w dół tak długo dopóki nie wcisnę innej strzałki. Bo w tej pętli po jednym naciśnięciu i wykonaniu się pętli program zatrzymuje się i czeka za kolejnym naciśnięciem przycisku a potrzebuję aby pętla zapętlała się tak długo dopóki nie nacisnę innego przycisku a nie zatrzymywała się po wykonaniu pętli.

Może inaczej, potrzebuję pętle która będzie tak długo się zapętlała aż nie nacisnę przycisku.

Moja pętla:

 
int main() {
        init();
        int ludek_x = 100, ludek_y = 100;
        while (!key[KEY_ESC]) {
           if( key[ KEY_LEFT ] ) ludek_x--;
           if( key[ KEY_RIGHT ] ) ludek_x++;
           if( key[ KEY_UP ] ) ludek_y--;
           if( key[ KEY_DOWN ] ) ludek_y++;
   
           rest(10);
           putpixel( screen, ludek_x, ludek_y, makecol( 255, 0, 255 ) );
        }

        deinit();
        return 0;
} 
0
           if( key[ KEY_LEFT ] ) kierunek=1;
           if( key[ KEY_RIGHT ] ) kierunek=2;
           if( key[ KEY_UP ] ) kierunek=3;
           if( key[ KEY_DOWN ] ) kierunek=4;

           // to niżej, można zrobić przez tablicę wskaźników na funkcje lub switch
           if( kierunek==1 ) ludek_x--;
           else if( kierunek==2 ] ) ludek_x++;
           else if( kierunek==3 ] ) ludek_y--;
           else if( kierunek==4 ] ) ludek_y++;
0
_13th_Dragon napisał(a):
           if( key[ KEY_LEFT ] ) kierunek=1;
           if( key[ KEY_RIGHT ] ) kierunek=2;
           if( key[ KEY_UP ] ) kierunek=3;
           if( key[ KEY_DOWN ] ) kierunek=4;

           // to niżej, można zrobić przez tablicę wskaźników na funkcje lub switch
           if( kierunek==1 ) ludek_x--;
           else if( kierunek==2 ] ) ludek_x++;
           else if( kierunek==3 ] ) ludek_y--;
           else if( kierunek==4 ] ) ludek_y++;

Nic to nie zmienia w programie ponieważ w miejscu:
while (!key[KEY_ESC])
się zatrzymuje po wykonaniu pętli i czeka za kolejnym polecenie, a chodzi aby ta pętla wykonywała się bez przerwy a przyciskami tylko zmieniamy kierunek.

Wystarczyła by mi pętla która:
która będzie tak długo się zapętlała aż nie nacisnę przycisku, np. Pętla w której wyświetlamy jeden raz napis witamy, i chcę aby ten napis wyświetlał(pętla się zapętlała) się tak długo aż nie nacisnę jakiegoś przycisku.

0

To nie możesz tego włożyć do jeszcze jednej pętli ?

0

Przepraszam bardzo pana _13th_Dragon wszystko działa jak należy i dziękuje.

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