2017-03-01 57 views
1

我一直在处理一种抽象艺术风格的东西。左键点击放置一个点,再次点击它会产生一个随机线,点击鼠标右键创建一个新点。为什么Processing.py跳过我的数组的倒数第二项?

问题出现在我用上下箭头挑选笔的颜色时。当我使用这些键时,跳过倒数第二项(黑色或粉红色)。代码附加。

def setup(): 
    size(750, 750) 
    background(255) 
    global clicks 
    global selector 
    global fillcolors 
    fillcolors = [0x80FFFFFF, 0x80000000, 0x80FF0000, 0x8000FF00, 0x800000FF, 0x80FFFF00, 0x80FF00FF, 0x8000FFFF] 
    selector = 1 
    clicks = 0 
    ellipseMode(CENTER) 
    fill(255, 255, 255, 128) 

def draw(): 
    ellipse(50, 50, 50, 50) 

def mousePressed(): 
    global x 
    global y 
    global clicks 
    if (mouseButton == LEFT) and (clicks == 0): 
     x = mouseX 
     y = mouseY 
     clicks = 1 
    if (mouseButton == LEFT) and (0 < clicks < 11): 
     line(x, y, x+random(-300, 300), y+random(-300, 300)) 
     clicks += 1 
    if (mouseButton == LEFT) and (clicks == 11): 
     wide = random(300) 
     clicks = 1 
     line(x, y, x+random(-300, 300), y+random(-300, 300)) 
     ellipse(x, y, wide, wide) 
    if mouseButton == RIGHT: 
     clicks = 0 

def keyPressed():    # this is the color selector area. 
    global selector 
    global fillcolors 
    global clicks 
    clicks = 0 
    if key != CODED: 
     background(255) 
    elif key == CODED: 
     if keyCode == UP: 
      if selector < 8:     # something in here is causing the second-to-last item of the array to be skipped. 
       fill(fillcolors[selector]) 
       selector += 1 
      if selector == 7: 
       fill(fillcolors[selector]) 
       selector = 0 
     if keyCode == DOWN: 
      if selector > 0: 
       fill(fillcolors[selector]) 
       selector -= 1 
      if selector == 0: 
       fill(fillcolors[selector]) 
       selector = 7 

回答

3

您的第一个if在每种情况下都会影响您的第二个。对于UP,如果selector为6,则它变为7,然后匹配selector == 7;对于DOWN,如果选择器为1,则它变为0,然后匹配selector == 0

使用elif让他们独家:

if selector < 8: 
    fill(fillcolors[selector]) 
    selector += 1 
elif selector == 7: 
    fill(fillcolors[selector]) 
    selector = 0
if selector > 0: 
    fill(fillcolors[selector]) 
    selector -= 1 
elif selector == 0: 
    fill(fillcolors[selector]) 
    selector = 7

和你的第一个条件可能应该是if selector < 7而非8

相关问题