我对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")
如果有人知道修复代码的方法,我将不胜感激。谢谢!
答案 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