2013-05-19 58 views
0

我正在做某种游戏,但我只设法完成了开始屏幕。现在我正在尝试进行第一级的介绍(所以一个屏幕有一些解释和一个按钮可以继续)。这段程序是用另一个文件编写的,所以我没有得到1000行文件。Pygame,导入模块

但现在我有一个问题。我用我的启动级别:

import level1 # here is my code of the level 
level1.level(screen) # "level" is the class and screen is used so pygame 
        # uses the same screen and doesn't start a new one 

这是level1.py:

class level(): 
    def __init__(self,originalscreen): 
     screen = originalscreen 
     self.levelintro() 

    def levelintro(self): 
     # Setting some variables 
     levelintro = True 

     # Background 
     background = pygame.Surface(screen.get_size()) # Change this 
     background = background.convert() 
     background.fill((255,0,0)) 

     # "Got it" button 
     gotitbutton = pygbutton.PygButton((350, 450, 300, 40)) 

     while levelintro: 
      screen.fill(0) 
      # Blitting 
      screen.blit(background, (0,0)) 
      gotitbutton.draw(screen) 

      # Refreshing screen 
      pygame.display.flip() 

所以现在我的问题:在我原来的.py,我进口pygame的。但是现在我试图在level1.py中导入pygame,但它不起作用。我如何导入它?

Thx为您的帮助! 卢卡斯

PS:对不起,我的英语不好,我是荷兰人......

编辑: 如果我把“进口pygame的”我在全班同学面前:

Traceback (most recent call last): 
    File "C:\Users\Lukas\Google Drive\Project\0.1\Project.py", line 17, in <module> 
    class startscreen(): 
    File "C:\Users\Lukas\Google Drive\Project\0.1\Project.py", line 51, in startscreen 
    level1.level(screen) 
    File "C:\Users\Lukas\Google Drive\Project\0.1\level1.py", line 8, in __init__ 
    self.levelintro() 
    File "C:\Users\Lukas\Google Drive\Project\0.1\level1.py", line 15, in levelintro 
    background = pygame.Surface(screen.get_size()) # Change this 
NameError: global name 'screen' is not defined 

我不不明白这一点,因为我用level1.level(屏幕)调用方法“level”,所以它通过屏幕,然后它设置屏幕=原始屏幕(女巫等于屏幕从我的原始文件)

如果我把“导入pygame“在我的课堂,我得到:

Warning (from warnings module): 
    File "C:\Users\Lukas\Google Drive\Project\0.1\level1.py", line 3 
    class level(): 
SyntaxWarning: import * only allowed at module level 

Traceback (most recent call last): 
    File "C:\Users\Lukas\Google Drive\Project\0.1\Project.py", line 17, in <module> 
    class startscreen(): 
    File "C:\Users\Lukas\Google Drive\Project\0.1\Project.py", line 51, in startscreen 
    level1.level(screen) 
    File "C:\Users\Lukas\Google Drive\Project\0.1\level1.py", line 9, in __init__ 
    self.levelintro() 
    File "C:\Users\Lukas\Google Drive\Project\0.1\level1.py", line 16, in levelintro 
    background = pygame.Surface(screen.get_size()) # Change this 
NameError: global name 'pygame' is not defined 
>>> 
+0

你说在你的'level1.py'文件中导入Pygame不起作用。你是什​​么意思?当你尝试它时你会得到一个例外吗?如果是这样,请添加完整的回溯到你的问题。 – Blckknght

+0

我编辑了我原来的帖子:) – user2395313

回答

0

你有正确的第一时间 - 把import pygame在文件的顶部,而不是里面的类。

你得到了NameError告诉您全球screen没有定义是,它是不是这个原因:当您在__init__方法设置screen = originalscreen,您创建了一个新的本地变量,它消失了该方法结束后立即开始。相反,使用self.screen;即将其作为实例变量存储在level对象上。

level类的__init__levelintro方法都与self.screen更换的screen每个实例,你的NameError问题应该得到解决。

+0

非常感谢你!这显然是一个愚蠢的错误,我仍然需要学习很多! – user2395313

+0

很高兴听到它的工作!如果全部设置完毕,您可以点击左侧的绿色复选标记来接受此答案。 – Etaoin

+0

完成:)现在我可以重新启动编程! – user2395313