乌龟的定义对我来说不错,但不起作用

时间:2018-12-02 22:37:35

标签: python python-3.x turtle-graphics

当前,我正在尝试制作一个游戏,并且在游戏中我希望它能使角色在对象上方时将其拾取。这是我到目前为止的内容:

import turtle
import time

default = turtle.clone()
scar = turtle.clone()

wn = turtle.Screen()
wn.setup(500,500)
wn.bgpic('TrumpTowers.gif')
wn.register_shape('default.gif')
wn.register_shape('scar.gif')
wn.register_shape('defaultscar.gif')

def drag(x, y):
    default.ondrag(None)  # disable handler inside handler

    default.goto(x, y)

    if default.distance(scar) < 40:
        default.shape('defaultscar.gif')
    elif default.shape() == 'turtle':
        default.shape('circle')

    default.ondrag(drag)

turtle.hideturtle()
default.shape('default.gif')
scar.shape('scar.gif')

default.pu()
default.left(90)
default.bk(35)

scar.pu()
scar.left(90)
scar.fd(45)
scar.speed(-1)

default.ondrag(default.goto)

有人觉得我会如何解决这个问题,因为这对我来说不错,但实际上不起作用!

1 个答案:

答案 0 :(得分:0)

我在您的代码中看到了三个问题。首先,您要在未真正使用的乌龟上呼叫hideturtle()

turtle.hideturtle()

这将应用于默认的乌龟,该乌龟不应该在游戏中。它只会显示,并会妨碍您,因为您这样做:

default = turtle.clone()
scar = turtle.clone()

代替:

default = turtle.Turtle()
scar = turtle.Turtle()

speed()方法无法识别参数-1:

scar.speed(-1)

如果参数无效,它将设置为其他值。

最后,在您可能遇到问题的地方,包含了drag(x, y) I wrote for you的定义,但是当需要设置处理程序时,您将设置错误的函数:

default.ondrag(default.goto)

应该是:

default.ondrag(drag)