如何修改代码使砖墙的偶数砖块呈水平放置而非垂直?
修正砖墙代码:实现偶数砖块水平放置
我已实现一面砖墙,但需要将偶数位置的砖块设置为水平放置(原代码为垂直),目标是错落排列的砖墙样式。当前代码如下:
def drawCustomBrickWall(rows, cols, brickWidth, brickHeight, mortarWidth): for row in range(rows): for col in range(cols): x = row * (brickWidth + (mortarWidth * 0.25)) y = col * (brickHeight + (mortarWidth * 4)) if x % 2 == 0: drawRect(x, y, brickWidth * 0.5, brickHeight * 2) else: drawRect(x, y, brickWidth, brickHeight)
问题点
- 坐标逻辑颠倒:
x按行号计算、y按列号计算,导致行列方向错乱 - 判断条件无效:用
x % 2 == 0判断砖块方向,和奇偶位置无关 - 砂浆间距混乱:不同方向的砂浆系数不一致,间距不均
修正后的代码
def drawCustomBrickWall(rows, cols, brickWidth, brickHeight, mortarWidth): for row in range(rows): for col in range(cols): # 基础坐标:x对应列方向,y对应行方向,统一砂浆间距 base_x = col * (brickWidth + mortarWidth) base_y = row * (brickHeight + mortarWidth) # 偶数列砖块水平放置,奇数列垂直放置 if col % 2 == 0: # 偶数行添加半砖偏移,实现错落效果 offset_x = -(brickWidth + mortarWidth)/2 if row % 2 == 1 else 0 drawRect(base_x + offset_x, base_y, brickWidth * 2, brickHeight) else: offset_x = -(brickWidth + mortarWidth)/2 if row % 2 == 1 else 0 drawRect(base_x + offset_x, base_y, brickWidth, brickHeight * 2)
调整说明
- 修正坐标体系:让
x对应水平列方向,y对应垂直行方向,符合视觉逻辑 - 正确识别偶数砖块:通过
col % 2 == 0判断偶数位置,设置水平尺寸(宽2倍、高不变) - 增加错落偏移:偶数行的砖块整体偏移半砖宽度,匹配目标砖墙的交错排列
- 统一砂浆间距:移除不合理的系数,保证所有砖块间的砂浆宽度一致
内容的提问来源于stack exchange,提问作者Hackula
相关产品推荐
相关产品推荐

