如何在Python中有效检查和更改龟坐标?

时间:2019-02-11 22:41:03

标签: python function syntax-error coordinates turtle-graphics

我对Python还是很陌生,我已经开始了推箱子游戏。我一直在测试此代码以检查坐标,以确保进入墙壁时盒子/播放器能够向后移动。我试着做一些循环和函数,但是我不断出错。

import turtle
wn=turtle.Screen()
a=turtle.Turtle()
b=turtle.Turtle()


def checking(x,y):
    if x.xcor()==y.xcor() and x.ycor()==y.ycor():
        return True
    else:
        return False


if checking(a,b)==True:
    a.xcor()=a.xcor()+50

语法错误-无法分配给函数调用 最后一行的a突出显示。

检查功能可以正常工作,因为该代码可以正常工作。

import turtle
wn=turtle.Screen()
a=turtle.Turtle()
b=turtle.Turtle()


def checking(x,y):
    if x.xcor()==y.xcor() and x.ycor()==y.ycor():
        return True
    else:
        return False


if checking(a,b)==True:
    wn.bgcolor("blue")

如果有人知道修复代码的方法,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

此行是一个问题:

a.xcor()=a.xcor()+50
xcor()相同的

用于访问坐标,而不是设置坐标。您要setx()

from turtle import Screen, Turtle

wn = Screen()

a = Turtle()
b = Turtle()

def checking(x, y):
    return x.xcor() == y.xcor() and x.ycor() == y.ycor()
    # or better yet: return x.position() == y.position()

if checking(a, b):
    a.setx(a.xcor() + 50)

这是您的下一个问题-checking()函数从长远来看不会起作用。乌龟爬行浮点平面,它们通常不会返回到它们离开的确切位置,例如(0, 0)(0, 0.001)。为了解决这个问题,我们需要一个不太精确的比较:

def checking(a, b):
    return abs(a.xcor() - b.xcor()) < 1 > abs(a.ycor() - b.ycor())

或更妙的是:

def checking(a, b):
    return a.distance(b) < 1