2012-04-28 89 views
0

我有功能,检查得分,将(我还没有完成),如果分数击中给出评分提高水平,我的功能:功能没有得到所谓的

def levels(Score): 
if score >= 100: 
    enemies = 6 
    velocity = 2 

,我称其为游戏循环:

levels(score) 

的功能从来没有被执行,我的源代码http://pastebin.com/JPZSTA6a 线路:35-38和150

谢谢

+1

对于“该函数从未被执行”的说法,你有什么证据? – 2012-04-28 00:36:48

+1

您是否曾尝试在函数中放入'print'语句来测试它是否被调用? – Wes 2012-04-28 00:38:22

+0

@KarlKnechtel因为如果函数被执行,它会抛出一条错误消息。 – ErHunt 2012-04-28 00:42:31

回答

1

该函数正在调用,但您正在为函数中的enemiesvelocity分配,因此它们是该函数的局部函数,并在函数返回时被丢弃。所以你的功能被称为,但没有持久的效果。

你需要阅读Python中的locals和globals。正如其他人指出的,您在这里也有Scorescore。 Python区分大小写,它们是不同的名称。

2

你有if score >= 100当你可能意味着if Score >= 100。该函数被执行,只是if语句总是计算为false。

+0

这是错误之一,但仍然无法正常工作。 if语句放置在游戏循环中时执行。 – ErHunt 2012-04-28 00:44:39

1

这是一个范围问题,你指的变量(敌人和速度)是在一个while循环内进一步创建的,所以它们不在你要修改它们的函数的范围内。你需要阅读Execution model它应该能够阐明范围规则。

+0

我尝试在游戏中放置得分,敌人和速度(),但仍然没有调用func – ErHunt 2012-04-28 01:01:49

0

您的代码,转述:

def game(): 

    def levels(Score): 
     print 'levels!' 

    while start == True: 
     print 'start is indeed True!' 
     while not finish or falling: 
      'I am not Finnish'  
      for i in range(enemies): 
       'alas for I am beset by enemies!' 
       levels(score) 

那么,为什么不是水平()被调用?我想这些许多控制流程项目中的一个并不符合你的要求。我不能说例如你的敌人变量是否是空的,但我可以告诉你,印刷品是你的朋友。