Как мне сделать сброс черепахи, когда она попадает в круг?

#python #turtle-graphics #python-turtle

#python #черепаха-графика #python-turtle

Вопрос:

В коде нет ошибок, мне просто нужно что-то добавить. Вот код для черепахи:

 #move is the spaceship


move = turtle.Turtle()

showturtle()
turtle.hideturtle()
move.setposition(-500,0)
move.pencolor('cyan')
move.fillcolor("blue")
move.penup()
move.speed()
move.shapesize(3,3,3)



def k1():
   move.forward(25)

     

def k2():
   move.left(30)


def k3():
   move.right(30)

   
def k4():
   move.backward(15)





wn.onkey(k1, "Up")
wn.onkey(k2, "Left")
wn.onkey(k3, "Right")
wn.onkey(k4, "Down")
 

И вот круг:

 asteroid = Turtle()

if move.distance(asteroid)<5:
    move.goto(0,0)
asteroid.pencolor('grey')
asteroid.fillcolor('grey')
asteroid.begin_fill()
asteroid.hideturtle()
asteroid.penup()
asteroid.speed(15)
asteroid.setposition(randint(-400,400), randint(-400,400))
asteroid.pendown()
asteroid.circle(35)
asteroid.end_fill()
 

Мне нужно, чтобы программа перезапускала игру, когда «перемещение» попадает в «астероид».
Программа работает нормально, но мне просто нужно добавить к ней.
Спасибо.

Ответ №1:

Вам нужно отслеживать положение ваших объектов и регулярно сравнивать их.

Функция .pos выдает вам текущее положение вашего объекта.

Вы должны создать цикл, в котором вы проверяете, совпадают ли позиции ваших объектов.

 if move.pos() == asteroid.pos():
   print("Collision!")
 

Вам также придется добавить размер ваших объектов к этим значениям (например move_size = move.pos() your_shape_size , извините, я никогда не работал с turtle), потому что два ребра могут столкнуться друг с другом, что тоже является столкновением.

Комментарии:

1. Вероятно, мне следовало упомянуть, что кругов много. Знаете ли вы, как заставить это работать?

2. Что вы подразумеваете под множеством кругов? Состоят ли корабль и астероид из кругов или есть другие круги, которые не должны сообщать о столкновении?

3. Итак, корабль — это настоящая черепаха. Вокруг холста разбросано много астероидов (кругов).

4. Хорошо, в основном вам нужно сравнить положение вашей черепахи / корабля с положением каждого астероида, потому что вы хотите отследить любое столкновение.