simple_draw - Как в нарисованной стене сдвинуть ряды?
Я нарисовал стену, но могу написать условие четности чтобы сдвинуть четные ряды, чтобы в итоге получилась кирпичная стена. Хелпаните пожалуйста
import simple_draw as sd
sd.resolution = (1000, 500)
# Нарисовать стену из кирпичей. Размер кирпича - 100х50
# Использовать вложенные циклы for
START_X = 0
START_Y = 0
BRICK_WIDTH = 100
BRICK_HEIGHT = 50
ROW_BRICK_NUMBER = 10
ROW_NUMBER = 10
BRICK_OFFSET = int(0.5 * BRICK_WIDTH)
for current_row in range(ROW_NUMBER):
if current_row % 2 == 0:
for current_brick in range(ROW_BRICK_NUMBER):
left_bottom_x = START_X + BRICK_WIDTH * current_brick
left_bottom_y = START_Y + BRICK_HEIGHT * current_row
left_bottom = sd.get_point(left_bottom_x, left_bottom_y)
right_top_x = left_bottom_x + BRICK_WIDTH
right_top_y = left_bottom_y + BRICK_HEIGHT
right_top = sd.get_point(right_top_x, right_top_y)
sd.rectangle(left_bottom, right_top, sd.COLOR_RED, width=3)
Ответы (2 шт):
Автор решения: cauf
→ Ссылка
Достаточно сдвигать начало отсчета по оси X для четных рядов.
import simple_draw as sd
sd.resolution = (1000, 500)
# Нарисовать стену из кирпичей. Размер кирпича - 100х50
# Использовать вложенные циклы for
START_X = 0
START_Y = 0
BRICK_WIDTH = 100
BRICK_HEIGHT = 50
ROW_BRICK_NUMBER = 10
ROW_NUMBER = 10
BRICK_OFFSET = int(0.5 * BRICK_WIDTH)
for current_row in range(ROW_NUMBER):
# вот здесь определяется, сколько именно составит смещение.
# для четного ряда будет 50, для нечетного - 0
OFFSET = 50 if current_row % 2 == 0 else 0
for current_brick in range(ROW_BRICK_NUMBER):
# добавим смещение к началу отсчета для оси X
left_bottom_x = START_X + OFFSET + BRICK_WIDTH * current_brick
left_bottom_y = START_Y + BRICK_HEIGHT * current_row
left_bottom = sd.get_point(left_bottom_x, left_bottom_y)
right_top_x = left_bottom_x + BRICK_WIDTH
right_top_y = left_bottom_y + BRICK_HEIGHT
right_top = sd.get_point(right_top_x, right_top_y)
sd.rectangle(left_bottom, right_top, sd.COLOR_RED, width=3)
результат:
Автор решения: Роман
→ Ссылка
Я попытался сделать по своему. Кажется, я постиг чёрную магию. Но красиво же, правда? Я старался, на это ушло много сил и времени.
sd.resolution = (1200, 600)
y2 = 0
number = 0 # Переменная для подсчёта циклов
for y1 in range(0, 600, 50): # Цикл для постройки кирпичей в высоту
y2 += 50
number += 1
if number % 2 == 0: # Условие. Если цикл нечётный, то сдвиг кирпичей. Если чётный - оставить на прежнем месте
x2 = 0
range_x1 = range(0, 1200, 100)
else:
x2 = 50
range_x1 = range(-50, 1100, 100)
for x1 in range_x1: # Кладём кирпичи в ширину
x2 += 100
sd.rectangle(left_bottom=sd.get_point(x1, y1), right_top=sd.get_point(x2, y2), color=sd.COLOR_ORANGE, width=3)
sd.pause()

