只有最后一个领域起作用。如何修理节拍器?

时间:2019-05-11 20:30:32

标签: python jupyter-notebook vpython

我正在尝试使用球体在vpython中制作一个可视节拍器。我有用户输入,询问他们想要什么时间签名(目前,我只需要4/4时间的变化,例如3 / 4、7 / 4等),程序就会生成该数量的球体,因此对于4 /将生成4次4个球体来表示节拍的每个部分。在询问他们想要什么速度后弹出另一个用户输入。我希望程序执行的操作是生成适当数量的球体,并使它们在一个时间接一个另一个地出现和消失。为了使程序能够区分出节拍,我设置了一个函数(我称为k)来获取当前时间,并使用模块化的函数来确定节拍(例如5%4意味着t = 5等于4/4次的第一拍)。

现在会生成适当数量的球体,但实际上只有一个(最右边的球体)球体闪烁。如何以正确的节奏出现所有球体?

使用我的模块化k函数,我尝试使用if / else语句说出k等于附加到列表的球体的值之一时,该球体将消失。如果k不存在,则该球体在那里。

print (n,'/4')
num_ball = int(n)
temp = input("What tempo do you want?" )
print (temp,'bpm')
tempo = int(temp)
balls = []
spheres = []
more_balls = np.arange (0, num_ball * 2, 2)

for x in more_balls:
    sphere_off = vp.sphere (radius = 0.5,
                            pos = vp.vector (x, 0, 0),
                            texture = 'https://i.imgur.com/WMxgtkS.jpg')
    balls.append(sphere_off)

for j in more_balls:
    sphere_on = vp.sphere (radius = 1,
                           pos = vp.vector (j, 0, 0),
                           color = vp.vector(0, 0, 0),
                           visible = True)
    spheres.append(sphere_on)



while True: 
    vp.rate(bps)
    t = t + dt
    k = t%num_ball

    if k in more_balls:
        sphere_on.visible = False

    else: 
        sphere_on.visible = True

我希望正确的球及时闪烁,但只有该行中的最后一个球闪烁。谢谢!

0 个答案:

没有答案