#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. Хорошо, в основном вам нужно сравнить положение вашей черепахи / корабля с положением каждого астероида, потому что вы хотите отследить любое столкновение.