Напишите программу, которая решает следующую задачу. В верхнем левом углу стандартного графического окна, появляется красный восьмиугольник (см. рисунок ниже). Этот восьмиугольник начинает движение вниз и вправо под углом в 45 градусов (смещается по X и по Y на одинаковое количество пикселей). Дойдя до нижней границы окна, восьмиугольник продолжает движение вверх и вправо по тем же углом, пока не соприкоснется с правой границей окна. Соприкоснувшись с ней он продолжает движение вверх и влево, а соприкоснувшись с верхней границей, движется вниз и влево до левой границы графического окна. Соприкосновение с левой границей приводит к очередной смене направления — вниз и вправо. Восьмиугольник должен остановиться у левой границы окна после пятого соприкосновения с ней. Размеры стороны квадрата, в который вписан восьмиугольник, и величина смещения задаются в программе константами.
Для решения данной задачи можно воспользоваться модулем graphics в Python. Ниже представлен пример программы:
from graphics import * WIDTH = 600 HEIGHT = 400 SIZE = 100 STEP = 5 win = GraphWin("Moving Octagon", WIDTH, HEIGHT) win.setBackground("white") octagon = Polygon(Point(WIDTH/2-SIZE/2, HEIGHT/2-SIZE/2), Point(WIDTH/2+SIZE/2, HEIGHT/2-SIZE/2), Point(WIDTH/2+SIZE/2+SIZE//2, HEIGHT/2), Point(WIDTH/2+SIZE/2, HEIGHT/2+SIZE/2), Point(WIDTH/2-SIZE/2, HEIGHT/2+SIZE/2), Point(WIDTH/2-SIZE/2-SIZE//2, HEIGHT/2), Point(WIDTH/2-SIZE/2, HEIGHT/2-SIZE/2)) octagon.setFill("red") octagon.draw(win) dx = STEP dy = STEP for i in range(5): while True: octagon.move(dx, dy) time.sleep(0.02) if octagon.getP1().getX() <= 0 or octagon.getP2().getX() >= WIDTH: dx *= -1 if octagon.getP1().getY() <= 0 or octagon.getP3().getY() >= HEIGHT: dy *= -1 if octagon.getP1().getX() == 0 and dx < 0: break time.sleep(1) win.close()
Этот код создает графическое окно, в котором появляется красный восьмиугольник, как описано в условии задачи. После запуска программа будет анимировать движение восьмиугольника по указанной траектории.
Для решения данной задачи можно воспользоваться модулем graphics в Python. Ниже представлен пример программы:
from graphics import *WIDTH = 600
HEIGHT = 400
SIZE = 100
STEP = 5
win = GraphWin("Moving Octagon", WIDTH, HEIGHT)
win.setBackground("white")
octagon = Polygon(Point(WIDTH/2-SIZE/2, HEIGHT/2-SIZE/2), Point(WIDTH/2+SIZE/2, HEIGHT/2-SIZE/2),
Point(WIDTH/2+SIZE/2+SIZE//2, HEIGHT/2), Point(WIDTH/2+SIZE/2, HEIGHT/2+SIZE/2),
Point(WIDTH/2-SIZE/2, HEIGHT/2+SIZE/2), Point(WIDTH/2-SIZE/2-SIZE//2, HEIGHT/2),
Point(WIDTH/2-SIZE/2, HEIGHT/2-SIZE/2))
octagon.setFill("red")
octagon.draw(win)
dx = STEP
dy = STEP
for i in range(5):
while True:
octagon.move(dx, dy)
time.sleep(0.02)
if octagon.getP1().getX() <= 0 or octagon.getP2().getX() >= WIDTH:
dx *= -1
if octagon.getP1().getY() <= 0 or octagon.getP3().getY() >= HEIGHT:
dy *= -1
if octagon.getP1().getX() == 0 and dx < 0:
break
time.sleep(1)
win.close()
Этот код создает графическое окно, в котором появляется красный восьмиугольник, как описано в условии задачи. После запуска программа будет анимировать движение восьмиугольника по указанной траектории.