NameError:名称'clean_up_bubs'未定义,即使它是?

时间:2015-08-15 09:18:01

标签: python

Traceback (most recent call last):
  File "C:/Users/anush/Documents/Python Stuff/Bubble Blaster 2.py", line 56, in <module>
    clean_up_bubs()
NameError: name 'clean_up_bubs' is not defined

MAIN GAME LOOP:

while True:
    if randint(1, BUB_CHANCE) == 1:
        create_bubble()
    move_bubbles()
    clean_up_bubs()
    window.update()
    sleep(0.01)
    def get_coords(id_num):
        pos = c.coords(id_num)
        x = (pos[0] + pos[2])/2
        y = (pos[1] + pos[3])/2
        return x, y
    def del_bubble(i):
        del bub_r[i]
        del bub_speed[i]
        c.delete(bub_id[i])
        del_bub_id[i]
    def clean_up_bubs():
        for i in range(len(bub_id)-1, -1 , -1):
            x, y = get_coords(bub_id[i])
            if x < -GAP:
                del_bubble(i)

1 个答案:

答案 0 :(得分:1)

在第一个循环中定义之前,您正在调用clean_up_bubs()。将函数定义移出while循环之上和之上。

def get_coords(id_num):
    pos = c.coords(id_num)
    x = (pos[0] + pos[2])/2
    y = (pos[1] + pos[3])/2
    return x, y


def del_bubble(i):
    del bub_r[i]
    del bub_speed[i]
    c.delete(bub_id[i])
    del_bub_id[i]


def clean_up_bubs():
    for i in range(len(bub_id)-1, -1 , -1):
        x, y = get_coords(bub_id[i])
        if x < -GAP:
            del_bubble(i)


while True:
    if randint(1, BUB_CHANCE) == 1:
        create_bubble()
    move_bubbles()
    clean_up_bubs()
    window.update()
    sleep(0.01)