Pygame初学者程序,屏幕未定义

时间:2018-02-18 04:17:22

标签: python pygame

AMOUNT = 1
x = 175
y = 175

def main():
    screen = pygame.display.set_mode((600,600))
    screen.fill( (251,251,251) )
    BoxAmountCalc(humaninput)
    DrawBoxCalc()
    pygame.display.flip()

    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                return

def BoxAmountCalc(x):
    x = (2**humaninput) * (2**humaninput)
    size = 600/x
    return size
def DrawBoxCalc():
    while True:
        pygame.draw.rect(screen,(0,0,0), (x,y,size,size))
        AMOUNT += 1
        x = x + size
        x = y + size
        pygame.display.flip()
        if AMOUNT > humaninput:
            break

我遗漏了代码的一些部分,一些变量定义,但是当我尝试运行此代码时,它给出了一个错误,指出“屏幕”没有定义。

这是因为我需要将它定义为函数的参数然后将其传递给函数,还是我在这里完全遗漏了一些东西?

感谢您的关注,对不起,我很抱歉。

1 个答案:

答案 0 :(得分:1)

  

这是因为我需要将它定义为的参数   函数然后将其传递给函数。

是。函数完成执行后,其中创建的变量将被销毁。这是一个例子:

def go():
    x = 10

go()
print(x)

--output:--
Traceback (most recent call last):
  File "1.py", line 5, in <module>
    print(x)
NameError: name 'x' is not defined

同样的事情:

def go():
    x = 10


def stay():
    print(x) 

go()
stay()

--output:--
 File "1.py", line 9, in <module>
    stay()
  File "1.py", line 6, in stay
    print(x) 
NameError: name 'x' is not defined

可是:

x = 10

def go():
    print(x)

go()

--output:--
10

更好:

def go(z):
    print(z)

x = 10
go(x)

--output:--
10

尽量保持你的函数自包含,这意味着他们应该接受一些输入并产生一些输出,而不使用函数外的变量。

在您的代码中,您可以执行以下操作:

DrawBoxCalc(screen)def DrawBoxCalc(screen)

但你也有人为输入的问题。我会尝试将DrawBoxCalc定义为DrawBoxCalc(人工输入,屏幕),并使用两个args调用它。这意味着你必须将main定义为main(humaninput)。

此外,函数名称应以小写字母开头,python使用所谓的snake_case作为小写名称,因此draw_box_calc和类名称应以大写字母开头,并且可以使用驼峰大小写: class MyBox