Credo che il simulatore non gestisca le situazioni in cui il giocatore supera il traguardo mentre si sta muovendo sull'asse y negativo (verso l'altro), infatti nei metodi 'traguardo' e 'inversione' si assume che self.py sia minore o uguale a self.y (quindi in sostanza se si supera il traguardo mentre ci si muove anche verso l'alto e poi ci si ferma, la gara non terminerà)