微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代码不能作为函数运行,但可以在主代码中运行 Python,pygame

如何解决代码不能作为函数运行,但可以在主代码中运行 Python,pygame

我一直在试验 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_posy_obs_pos 是局部变量(即它们在函数中定义),那么您需要使用语句 global x_obs_posglobal y_obs_pos

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。