问题描述
我一直在试验 pygame,但遇到了一个问题。我编写的旨在创建基于时间的事件的代码只能在函数之外工作。我错过了什么吗?
def drop_obs(obs_list,timer):
timer += clock.tick(60)/1000
if timer >= 2:
x_obs_pos = WIDTH/2
y_obs_pos = random.randint(0,HEIGHT - block_size)
obs_list.append([x_obs_pos,y_obs_pos])
timer = 0
如果我将代码粘贴到主代码中,它会起作用。 (关于此代码,目标只是在时钟滴答时将新的 x 和 y 位置附加到已经存在的列表中)
解决方法
尝试传递预定义的全局变量作为 drop_obs()
函数的参数
timer1 = 0
list1 = [] #can be pre-emptied or pre-filled
[...] #the other part of code
def drop_obs(obs_list,timer):
timer += clock.tick(60)/1000
if time >=2:
x_obs_pos = WIDTH/2
y_obs_pos = random.randint(0,HEIGHT - block_size)
obs_list.append([x_obs_pos,y_obs_pos])
timer = 0
drop_obs(list1,timer1)
此外,如果 x_obs_pos
和 y_obs_pos
是局部变量(即它们在函数中定义),那么您需要使用语句 global x_obs_pos
和 global y_obs_pos