2012-04-28 3 views
0

У меня есть функция, которая проверяет счет и будет (я еще не закончил) увеличивает уровень, если оценка попадает в данный счет, моя функция:Функция не вызывался

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

и я звоню его в игровой цикл:

levels(score) 

функция никогда не будет выполнена, мой исходный код http://pastebin.com/JPZSTA6a Line: 35-38 и 150

Спасибо

+1

Каковы ваши доказательства утверждения о том, что «функция никогда не выполняется»? –

+1

Вы пытались поставить инструкцию 'print' в функцию, чтобы проверить, вызвана ли она? – Wes

+0

@KarlKnechtel, потому что если функция будет выполнена, это вызовет сообщение об ошибке. – ErHunt

ответ

1

Функция вызывается, но вы назначаете enemies и velocity в функции, поэтому они локальны для функции и затем отбрасываются при возврате функции. Таким образом, ваша функция называется, но не имеет длительного эффекта.

Вам нужно прочитать о местных и глобальных шагах в Python. Как отмечают другие, у вас также есть и Score, и score. Python чувствителен к регистру, это разные имена.

2

У вас есть if score >= 100, когда вы, вероятно, имели в виду if Score >= 100. Функция выполняется, это просто, что оператор if всегда принимает значение false.

+0

это была одна из ошибок, но все еще не работает. оператор if, если он помещен в игровой цикл, выполняет. – ErHunt

1

Это проблема определения, переменные, о которых вы говорите (враги и скорость), создаются далее внутри цикла while, поэтому они не входят в сферу действия функции, в которой вы пытаетесь их модифицировать. Вы должны прочитать на Execution model, он должен иметь возможность уточнить правила определения области.

+0

Я попытался поставить счет, врагов и скорость в игре(), но все же функция func не вызвана – ErHunt

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) 

Итак, почему не уровни() должна быть вызвана? Я полагаю, что один из тех элементов потока управления не идет так, как вы хотите. Например, я не могу сказать, пуста ли ваша врага, но я могу сказать, что печать - ваш друг.

Смежные вопросы