Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro5] pocisk rusza dopiero po puszczeniu klawisza

Ostatnio zmodyfikowano 2021-02-25 14:52
Autor Wiadomość
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.
C/C++
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 ) );
P-178146
DejaVu
» 2021-02-24 23:46:37
Próbowałeś debugować swój kod?
P-178148
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ć?
P-178149
DejaVu
» 2021-02-25 10:02:27
C/C++
pozycja_kolka_y--
Wywal to odejmowanie. Może kółko po prostu szybko wyjeżdża Ci poza ekran.
P-178150
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.
P-178152
pekfos
» 2021-02-25 13:08:51
C/C++
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.
P-178154
lewus
Temat założony przez niniejszego użytkownika
» 2021-02-25 14:52:10
pozmieniałem logikę i działa. dzięki
P-178155
« 1 »
  Strona 1 z 1