Как сделать чтобы условие перемещения шара была по границам окружности и стороне квадрата

import turtle

# создаем окно программы
screen = turtle.Screen()

# создаем шар
ball = turtle.Turtle()
ball.shape("circle")
ball.shapesize(10, 10, 10)
ball.color("red")
ball.penup()

# задаем начальную позицию для шара
ball.goto(0, -500)

# создаем препятствие
obstacle = turtle.Turtle()
obstacle.shape("square")
obstacle.shapesize(10, 10, 10)
obstacle.color("blue")
obstacle.penup()

# задаем начальную позицию для препятствия
obstacle.goto(0, 0)

# задаем значения ширины, длины и высоты препятствия
obstacle_width = 10
obstacle_length = 10
obstacle_height = 10
#turtle.write((-100,0), "Home = ", True, font=("Arial", 18, "normal"))
# turtle.write((-100,0), True)
pen = turtle.Turtle()
pen1 = turtle.Turtle()
# функция для проверки столкновения шара и препятствия
def check_collision():
    ball_x , ball_y = ball.position()
    obstacle_x, obstacle_y = obstacle.position()

    pen.clear()
    pen.setposition(100, 150)
    pen1.clear()
    pen1.setposition(-100, 150)
    pen.write(ball_x, font=('monaco',30,'bold'),align='left')
    pen1.write(ball_y, font=('monaco',30,'bold'),align='left')
    # проверяем, находится ли центр шара внутри препятствия
    if (obstacle_x - obstacle_width/2 < (ball_x - 0)< obstacle_x + obstacle_width/2) and (obstacle_y - obstacle_length/2 < (ball_y - 0)< obstacle_y + obstacle_length/2):
        
        # если шар находится внутри препятствия, проверяем, пересекает ли он верхнюю грань
        if ball_y + 10.0 > (obstacle_y )+ (obstacle_height )/2:
            return True
    
    # если шар не пересекает препятствие, вернем False
    return False

# функция для перемещения шара вверх на расстояние distance
def move_up(distance):
    ball.setheading(90)
    ball.forward(distance)

# функция для перемещения шара вправо на расстояние distance
def move_right(distance):
    ball.setheading(0)
    ball.forward(250)

# если шар столкнулся с препятствием, изменяем направление движения
def change_direction():
    ball.setheading(180)

# задаем скорость движения шара
ball_speed = 7

# двигаем шар до тех пор, пока он не обойдет препятствие
while True:
    move_up(ball_speed)
    
    # если шар пересекает верхнюю грань препятствия, двигаем его вправо
    if check_collision():
        move_right(ball_speed)
        change_direction()
    
    # если шар не пересекает препятствие, продолжаем двигаться вверх
    else:
        move_up(ball_speed)
    
    # если шар достиг верхней границы экрана, завершаем программу
    if ball.ycor() + 7.3 > screen.window_height()/2:
        break

# закрываем окно программы
screen.bye()

Ответы (0 шт):