You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码使砖墙的偶数砖块呈水平放置而非垂直?

修正砖墙代码:实现偶数砖块水平放置

我已实现一面砖墙,但需要将偶数位置的砖块设置为水平放置(原代码为垂直),目标是错落排列的砖墙样式。当前代码如下:

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)

问题点

  1. 坐标逻辑颠倒:x按行号计算、y按列号计算,导致行列方向错乱
  2. 判断条件无效:用x % 2 == 0判断砖块方向,和奇偶位置无关
  3. 砂浆间距混乱:不同方向的砂浆系数不一致,间距不均

修正后的代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:23:09