как заставить актера соскользнуть с правой стороны экрана, а затем сбросить обратно влево - PullRequest
1 голос
/ 19 марта 2019

Извините, если вопрос глупый. Я только начал писать код в библиотеке с названием Pygame zero. У меня проблема с переводом этого кода:

if actor.left > WIDTH:

actor.right = 0

Вместо того, чтобы он шел направо, а затем показывался слева, я бы хотел, чтобы он мог уходить налево и затем появляться справа. Извините еще раз, если это вопрос новичка, но любая помощь приветствуется!

Вот полный код

    import pgzrun

    WIDTH = 1200
    HEIGHT = 700
    music.play('music1')
    chick = Actor('chick')
    chick.pos = 100, 550 
    hippo = Actor('hippo')
    hippo.pos = 1100, 550 

    def draw():
        screen.blit('background1', (0,0))  
        chick.draw()  
        hippo.draw()

    def update():

        if chick.left > WIDTH:
            chick.right = 0
        if hippo.left > WIDTH:
            hippo.right = 0

    if keyboard.left:
        hippo.x = hippo.x - 2 #contols for hippo
        hippo.angle += 3 #rotation effect
    if keyboard.right:
        hippo.x = hippo.x + 2 #contols for hippo
        hippo.angle -= 3 #rotation effect
    if keyboard.a:
        chick.x = chick.x - 2 #contols for chick
        chick.angle += 3 #rotation effect
    if keyboard.d:
        chick.x = chick.x + 2 #contols for chick
        chick.angle -= 3 #rotation effect






pgzrun.go()

1 Ответ

2 голосов
/ 19 марта 2019

В вашем существующем коде вы справляетесь с выходом с правой стороны.Чтобы справиться с выходом с правой стороны, вам нужно добавить одну новую инструкцию 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

Layout of your window with actor

Я думаю, что это изображение может помочь понять, что происходит.Важная часть, чтобы понять, что окно похоже на систему координат.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

Просто поэкспериментируйте, и вы должны понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...