当我在Processing.py中运行以下代码时,出现索引超出范围错误,并且我无法弄清原因。感谢所有帮助。
x = 0
y = 0
rand = random(255)
def setup():
size(200, 200)
def draw():
global x, y, rand
loadPixels()
for i in range(0, width):
x += 1
for j in range(0, height):
y += 1
index = (x + y*width)*4
pixels[index + 0] = color(rand)
pixels[index + 1] = color(rand)
pixels[index + 2] = color(rand)
pixels[index + 3] = color(rand)
updatePixels()
答案 0 :(得分:0)
您会收到超出范围的错误,因为x
和y
从未重置为0,并且在pixels[]
字段中,每个颜色通道都没有一个元素,因此每个像素一个color()
元素:
index = x + y*width
pixels[index] = color(rand, rand, rand)
您必须在相应的循环之前设置x=0
和y=0
,并在循环结束时增加x
和y
:
def draw():
global x, y, rand
loadPixels()
x = 0
for i in range(0, width):
y = 0
for j in range(0, height):
index = x + y*width
pixels[index] = color(rand, rand, rand)
y += 1
x += 1
updatePixels()
如果要为每个像素生成随机颜色,则必须使用为每个像素的每个颜色通道生成随机值:
pixels[index] = color(random(255), random(255), random(255))
或
pixels[index] = color(*(random(255) for _ in range(3)))
进一步可以简化代码。您可以直接使用i
和j
来代替x
和y
。例如:
def draw():
loadPixels()
for x in range(width):
for y in range(height):
pixels[y*width + x] = color(random(255), random(255), random(255))
updatePixels()