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()