首页 > 解决方案 > 如何让演员从屏幕的右侧滑出然后重置回左侧

问题描述

对不起,如果这个问题很愚蠢。我刚刚开始在一个名为 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()

标签: pythonpygame

解决方案


在您现有的代码中,您处理在右侧走出去。要处理走出右侧,您需要为每个参与者添加一个新的 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

带有演员的窗口布局

我认为这张图片可以帮助理解正在发生的事情。理解窗口就像一个坐标系的重要部分。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

只需进行实验,您就应该了解发生了什么。


推荐阅读