如何使演員從屏幕右側滑出並重置回原位

2024-05-19 06:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 代码rightforifchickwidthleftactor
1条回答
网友
1楼 · 发布于 2024-05-19 06:23:56

在现有代码中,您可以在右侧处理退出。要处理从右侧退出,需要为每个参与者添加一个新的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位于左侧,宽度位于右侧

如果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

只要做个实验,你就会明白发生了什么

相关问题 更多 >

    热门问题