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()
→ Ссылка