Odpowiedź:
calculate_player_movement zwróciło None, zamiast (x, y) lub innego iterowalnego, dwuelementowego obiektu.
Ta funkcja nic nie zwraca. Nie ma tam "return". Ona generalnie wygląda na mocno nieskończoną. Nazwa wskazuje na to, że miałaby wyliczyć nową pozycję gracza, a robi mnóstwo jakiś innych rzeczy zakończonych printami.
Do tego "global" powinno się stosować w ostateczności, a tutaj jest to w olbrzymiej ilości.
Wyjaśnienie: