【问题标题】:Why does the turtle not respond to the y border?为什么乌龟不响应 y 边界?
【发布时间】:2023-02-26 19:21:55
【问题描述】:

我正在制作一个带有地图边界的乌龟游戏,但我的乌龟只适用于 x 边界,只是跳过 y 边界。任何人都可以帮忙吗?

def gameplay():
    t.forward(10)
    t.heading()
    time.sleep(0.1) 
    sc.onkey(turnleft, "Left")
    sc.onkey(turnright, "Right")
    sc.listen()
    if t.distance(apple) < radius_sum:
        apple.goto(random.randrange(-500, 500), (random.randrange(-500, 500)))
    if t.position() >= (500,500):
        t.penup()
        t.back(1000)
        t.pendown()
    if t.position() <=(-500,-500):
        t.penup()
        t.back(1000)
        t.pendown()

【问题讨论】:

    标签: python turtle-graphics python-turtle


    【解决方案1】:

    如您所知,.position() 返回一个 (x, y) 元组。您正在将其与另一个 (x, y) 元组进行比较。

    让我们检查其中一些比较,看看我们是否得到正确的结果。我们将使用 5000 作为一个明显超出一个轴或另一个轴范围的大值,使用 10 作为一个明显在范围内的小值。

    >>> (-5000, 10) <= (-500, -500)
    True
    >>> (5000, -10) <= (-500, -500)
    False
    >>> (10, 5000) <= (500, 500)
    True
    >>> (-5000, -10) <= (-500, -500)
    True
    >>> (5000, 10) <= (500, 500)
    False
    >>> (-10, -5000) <= (-500, -500)
    False
    >>> (-10, 5000) <= (-500, -500)
    False
    >>> (10, -5000) <= (-500, -500)
    False
    

    显然,Y 值被忽略了,因此像这样比较元组不适用于您的用例。尝试分别比较各个 x 和 y 位置。

    比较元组的行为是这样的:从最左边的元素对开始比较它们。如果值不同,则评估比较。如果它们相同,则移动到下一个元素并重复该过程,直到两个元素不同并且可以进行比较。如果一个列表在此之前用完了元素,则另一个列表更大。如果它们同时用完并且所有元素都相等,则元组相等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 2011-03-16
      • 2022-01-04
      • 1970-01-01
      • 2020-06-17
      相关资源
      最近更新 更多