为什么这个网格不均匀?

时间:2017-09-29 18:04:04

标签: python processing

这可能是非常明显的事情,但我似乎无法找到为什么网格中的第一列是相同的。

grid = [[1]*8 for n in range(8)]

cellWidth = 70

def is_odd(x):
    return bool(x - ((x>>1)<<1))

def setup():
    size(561, 561)

def draw():
    x,y = 0,0
    for xrow, row in enumerate(grid):
        for xcol, col in enumerate(row):
            rect(x, y, cellWidth, cellWidth)
            if is_odd(xrow+xcol):
                fill(0,0,0)
            else:
                fill(255)
            x = x + cellWidth
        y = y + cellWidth
        x = 0

def mousePressed():
    print mouseY/cellWidth, mouseX/cellWidth
    print is_odd(mouseY/cellWidth + mouseX/cellWidth)

我从上面的代码得到的结果是: checkers board

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

看起来fill命令不会改变您绘制的最后一个矩形的颜色;相反,它会改变其后的所有绘制调用的颜色。根据{{​​3}}:

  

设置用于填充形状的颜色。例如,如果运行fill(204,102,0),则所有后续形状将用橙色填充。

所以你的所有颜色都落后了一个方格。就好像所有的瓷砖都向右移动了一样,除了最左边的一行,一行向下移动,八行向左移动。这使得该行与所有其他行不匹配。

尝试在fill电话前发出rect来电:

    for xcol, col in enumerate(row):
        if is_odd(xrow+xcol):
            fill(0,0,0)
        else:
            fill(255)
        rect(x, y, cellWidth, cellWidth)
        x = x + cellWidth