определение черепахи выглядит нормально для меня, но не работает - PullRequest
0 голосов
/ 03 декабря 2018

В настоящее время я пытаюсь создать игру, и в игре мне бы хотелось, чтобы, если персонаж находится над объектом, он поднимает его.Это то, что у меня есть до сих пор:

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 голосов
/ 03 декабря 2018

Я вижу три проблемы в вашем коде.Во-первых, вы звоните hideturtle() на черепаху, которую вы на самом деле не используете:

turtle.hideturtle()

Это применяется к черепахе по умолчанию, которая не должна быть в игре.Он только появляется и мешает, потому что вы делаете:

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

Вместо:

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

Метод speed() не распознает аргумент -1:

scar.speed(-1)

Если аргумент недействителен, он установит другое значение.

Наконец, если у вас, вероятно, возникла проблема, о которой вы спрашиваете, вы включаетеопределение drag(x, y) Я написал для вас , но когда приходит время установить обработчик, вы устанавливаете неправильную функцию:

default.ondrag(default.goto)

это должно быть:

default.ondrag(drag)
...