Zabrałem się za skakanie. Koncept jest prosty: wciskam jakiś klawisz, powiedzmy Z i skaczę. Założyłem, że dla skoku wysokości 50 px „skokowość” skoku mogłaby wyglądać tak: 0-20-35-45-50-45-35-20-0. Zacząłem kodować, ale natrafiłem na problem.

Do tej pory każdy ruch gracza realizowany był gdy został wciśnięty przycisk. Jednak przy skoku musi być jakieś opóźnienie między każdym stadium. No i tu właśnie pojawił się problem.

Na początku szukałem jakiegoś odpowiednika Phpowej funkcji sleep() dzięki której mógłbym „zamrażać” gracza na ułamki sekund między stadiami. No i nie znalazłem 😉 Nie szukałem zbyt długo, bo uznałem, że takie podejście jest bez sensu. Póki co mam tylko gracza. Ale później pojawią się jacyś wrogowie czy ogólnie elementy które będą musiały się same poruszać.

Zacząłem szukać jakiegoś timera, który będzie odpalał pewne funkcje co jakiś czas. Znalazłem QTimer, która idealnie się do tego nadaje. Aby użyć timera do moich potrzeb trzeba raptem 3 linijek kodu:

     timer = QtCore.QTimer(self)
     timer.timeout.connect(self.tick)
     timer.start(100)

Na początku inicjalizujemy timer, potem podłączamy pod każdy timeout jakąś metodę. Na koniec ustawiam długoś timeoutu jako parametr w start. Tyle 😃

Dzięki tej prostej klasie mogę teraz bez problemu zająć się skokiem. Wymaga to nieco przeróbek, więc na razie pozwoliłem sobie zrobić mocne MVP po prostu wypluwające pewne popularne wśród programistów słowo na konsolę 😉

W następnym wpisie nie ma już wymówek - pojawi się skok!