如何使演员从屏幕右侧滑出,然后重设回左侧

时间:2019-03-19 19:15:15

标签: python pygame

很抱歉,这个问题很愚蠢。我刚刚开始在名为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 个答案:

答案 0 :(得分:2)

在现有代码中,您可以在右侧执行走出操作。要处理从右侧移出的问题,您需要为每个参与者添加一个新的if语句。您可以在现有的if语句下添加ID。

"""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在左侧,WIDTH在右侧。

如果actor.right的坐标小于0(if chick.right < 0:),则角色在左侧完全移出。因此,您必须将其左侧值设置为右侧。这样,演员就被移到了最右边。您可以认为这就像您有一个真实的矩形,然后将矩形的左边缘移到某个位置。在这种情况下,位置WIDTH。当您尝试设置WIDTH以外的其他值时,这一点应该会变得更加清楚。

尝试使用chick.left = WIDTH/2 # move it nearly to the centerchick.left = 20

要将其精确移动到中心:

width_actor = actor.right - actor.left
if actor.right < 0:
    actor.left = WIDTH/2 - width_actor/2

只是实验,您应该了解发生了什么。