lewus Temat założony przez niniejszego użytkownika |
[Allegro5] pocisk rusza dopiero po puszczeniu klawisza » 2021-02-24 22:11:36 Witam Kolko "próbuje" ruszyć, ale rusza się dopiero po puszczeniu spacji. do { al_get_keyboard_state( & klawiatura ); if( al_get_time() > czas + 0.01 ) { if( al_key_down( & klawiatura, ALLEGRO_KEY_RIGHT ) && x < szer - rozm ) x = x + 1; if( al_key_down( & klawiatura, ALLEGRO_KEY_LEFT ) && x > 0 ) x = x - 1; if( al_key_down( & klawiatura, ALLEGRO_KEY_DOWN ) && y < wys - rozm ) y = y + 1; if( al_key_down( & klawiatura, ALLEGRO_KEY_UP ) && y > 0 ) y = y - 1; if( al_key_down( & klawiatura, ALLEGRO_KEY_SPACE ) ) { done = true; pozycja_kolka_x = x; pozycja_kolka_y = y; } czas = al_get_time(); } al_clear_to_color( al_map_rgb_f( 0.5, 0.5, 0.5 ) ); al_draw_bitmap( kwadrat, x, y, 0 ); al_draw_textf( font8, al_map_rgb( 255, 255, 0 ), 10, 10, 0, "x=%3d , y=%3d", x, y ); if( done ) al_draw_filled_circle( pozycja_kolka_x + 20, pozycja_kolka_y--, 5, green ); al_flip_display(); al_rest( 0.001 ); } while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) ); |
|
DejaVu |
» 2021-02-24 23:46:37 Próbowałeś debugować swój kod? |
|
lewus Temat założony przez niniejszego użytkownika |
» 2021-02-25 00:27:06 Tak. Problem w tym, że po ustawieniu breakpointa przerywa się działanie spacji, więc pozycja kółka się zmienia i żadnych wniosków nie potrafię wyciągnąć. Jakieś wskazówki jak debugować? |
|
DejaVu |
» 2021-02-25 10:02:27 Wywal to odejmowanie. Może kółko po prostu szybko wyjeżdża Ci poza ekran. |
|
lewus Temat założony przez niniejszego użytkownika |
» 2021-02-25 11:27:15 Wyjeżdża poza ekran po puszczeniu spacji. Wyświetlam pozycje kółka w konsoli. Gdy trzymam spacje, kólko wykonuje odejmowanie 2 razy. Odejmowanie kontynuuje dopiero gdy puszczam spacje. Próbowałem kombinować z ALLEGRO_EVENT_KEY_DOWN, ale to działa dla dowolnego klawisza (nawet jak wstawie do warunku ze spacją), poza tym rejestruje wciśniecie klawisza 1 raz. Nie rejestruje przytrzymania klawisza. |
|
pekfos |
» 2021-02-25 13:08:51 if( al_key_down( & klawiatura, ALLEGRO_KEY_SPACE ) )
{ done = true; pozycja_kolka_x = x; pozycja_kolka_y = y; } Dopóki masz wciśniętą spację, wymuszasz pozycję kółka. Użyj zdarzeń albo dopisz dodatkową logikę by ten kod wykonał się tylko raz na naciśnięcie klawisza, na przykład przez sprawdzenie czy done jest ustawione na false. |
|
lewus Temat założony przez niniejszego użytkownika |
» 2021-02-25 14:52:10 pozmieniałem logikę i działa. dzięki |
|
« 1 » |