self.vSpeed starts at zero. height = 200 gravity = ((speed ** 2) / height) * 0.5 # destruct? if self._selfDestruct > 0: self._selfDestruct -= 1 elif self._selfDestruct == 0 and not self._dead: self.pop() # update horizontal movement self.x += self.hSpeed if self.x + self.rect.h > 800: self.x = 800 - self.rect.w self.dx = -abs(self.hSpeed) elif self.x < 0: self.x = 0 self.move = abs(self.move) # fix vertical position self.y += self.vSpeed self.vSpeed += gravity if self.y + self.rect.h > 500: self.y = 500 - self.rect.h self.vSpeed = -speed self._turn = False # update rect self.rect.x = int(self.x) self.rect.y = int(self.y) if self.vSpeed >= 0 and not self._turn: self._turn = True print 500 - self.y - self.rect.h