Witam.
Piszę sobie grę pokroju flappy birda i mam problem z implementacją skoku.
Zamysł jest taki, że ptaszek ciągle leci w na ukos w dół i lewo bądź prawo i skok zmienia to na chwilę, dajmy na to że na sekundę zamiast w dół, leci w górę. Wydawało mi się to banalne do zrobienia ale coś nie działa.
Kod lotu wygląda na timerze tak:
void __fastcall TForm1::RuchPrawoTimer(TObject *Sender)
{
Ptaszek->Left+=10;
Ptaszek->Top+=10;
}
natomiast zmiana po wciśnięciu spacji była by taka:
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key == VK_SPACE)
{
SkokG->Enabled=true;
Sleep(1000);
SkokG->Enabled=false;
}
}
void __fastcall TForm1::SkokGTimer(TObject *Sender)
{
Ptaszek->Top-=10;
}
No i efekt jest taki, że zamiast skakać, program mi zasypia, ptaszek miejsca nie zmienia a potem leci dalej. Domyślam się, że to wina tego sleepa, ale jak inaczej ustawić wyłączenia timera po jakimś czasie? No i nadmienię jeszcze, że nie chce używać tej funkcji, że jak spacja jest przytrzymana to leci w górę a jak puszczę to leci w dół bo nie o to w takich grach chodzi :D
Problem wydaje mi się banalny ale rozwiązanie stale mi umyka :<
Pozdrawiam i dzięki za pomoc.