В вашем существующем коде вы справляетесь с выходом с правой стороны.Чтобы справиться с выходом с правой стороны, вам нужно добавить одну новую инструкцию if для каждого актера.Вы можете добавить идентификатор прямо под ваши существующие заявления if.
"""Your existing code"""
if chick.left > WIDTH:
chick.right = 0
if hippo.left > WIDTH:
hippo.right = 0
""""My new code"""
if chick.right < 0:
chick.left = WIDTH # Maybe change to WIDTH - 1 to make it visible
if hippo.right < 0:
chick.left = WIDTH # Maybe change to WIDTH - 1 to make it visible
Я думаю, что это изображение может помочь понять, что происходит.Важная часть, чтобы понять, что окно похоже на систему координат.0 слева и ШИРИНА справа.
Если координата actor.right
меньше 0 (if chick.right < 0:
), актер полностью переместился на левую сторону.Таким образом, вы должны установить его левое значение, чтобы быть на правом краю.Таким образом, актер перемещается в самую правую сторону.Вы можете думать об этом, как будто у вас есть настоящий прямоугольник, и вы перемещаете левый край прямоугольника в положение.В этом случае позиция WIDTH
.это должно стать более понятным, если вы попытаетесь установить другие значения, кроме WIDTH
.
Попробуйте, например, chick.left = WIDTH/2 # move it nearly to the center
или chick.left = 20
.
Чтобы переместить его точно в центр:
width_actor = actor.right - actor.left
if actor.right < 0:
actor.left = WIDTH/2 - width_actor/2
Просто поэкспериментируйте, и вы должны понять, что происходит.