很抱歉,这个问题很愚蠢。我刚刚开始在名为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()
答案 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
我认为这张图片可以帮助您了解发生了什么。了解窗口就像坐标系的重要部分。 0在左侧,WIDTH在右侧。
如果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
只是实验,您应该了解发生了什么。