Как отрисовать в цикле for кирпичную стену на python
📁 python, ии
Есть библиотека simple_draw для отрисовки простых графических примитивов. Не могу понять как отрисовать цикл вертикальных линий, точнее у меня получается в каждом ряду по одной линии со сдвигом.
width = 100height = 50x = 0y = 0x_1 = 100y_1 = 50rows = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)x0 = 0y0 = 0x1 = 600y1 = 0x_v_0 = 0y_v_0 = 0x_v_1 = 0y_v_1 = 50for row in rows: y1 += 50 start_point = sd.get_point(0, y1) end_point = sd.get_point(600, y1) sd.line(start_point=start_point, end_point=end_point, color=sd.COLOR_ORANGE, width=6) for row_v in range(6): x_v_0 += width y_v_0 += height x_v_1 += width y_v_1 += height start_point1 = sd.get_point(x_v_0, y_v_0) end_point1 = sd.get_point(x_v_1, y_v_1) sd.line(start_point=start_point1, end_point=end_point1, color=sd.COLOR_ORANGE, width=6) В цикле
for row_v in range(6):Вы одновременно увеличиваете координату x и координату y
x_v_0 += widthy_v_0 += heightx_v_1 += widthy_v_1 += heightА нужно рассматривать такую стену, как двумерный массив, т.е. сначала мы проходим по первой строке и отрисовываем вертикальные линии, при этом координата y не изменяется, а изменяется только координата x. При переходе к следующей строке y увеличивается, а x обнуляется. При этом, чтобы получилась действительно похожая кирпичная стена, нужно через строку добавлять сдвиг, равный половине длины кирпича.
for row in rows: y1 += 50 start_point = sd.get_point(0, y1) end_point = sd.get_point(600, y1) sd.line(start_point=start_point, end_point=end_point, color=sd.COLOR_ORANGE, width=6) # Четная строка if row % 2 == 0: x_v_0 = 0 x_v_1 = 0 for row_v in range(7): start_point1 = sd.get_point(x_v_0, y_v_0) end_point1 = sd.get_point(x_v_1, y_v_1) sd.line(start_point=start_point1, end_point=end_point1, color=sd.COLOR_ORANGE, width=6) x_v_0 += width x_v_1 += width # Нечётная строка else: # Сдвиг x_v_0 = width / 2 x_v_1 = width / 2 for row_v in range(6): start_point1 = sd.get_point(x_v_0, y_v_0) end_point1 = sd.get_point(x_v_1, y_v_1) sd.line(start_point=start_point1, end_point=end_point1, color=sd.COLOR_ORANGE, width=6) x_v_0 += width x_v_1 += width # Закончили рисовать одну строку, увеличиваем координаты `y` y_v_0 += height y_v_1 += height Войдите чтобы оставить ответ