0

スコアをチェックする関数があり、スコアが指定されたスコアに達すると(まだ終わっていません)レベルが上がります。私の関数:

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

そして、私はゲームループでそれを呼び出しています:

levels(score)

関数が実行されることはありません。私のソース コードhttp://pastebin.com/JPZSTA6a Line: 35-38 and 150

ありがとうございました

4

4 に答える 4

2

あなたはif score >= 100おそらくあなたが意図したときに持っていますif Score >= 100。関数が実行されます。if ステートメントが常に false と評価されるだけです。

于 2012-04-28T00:40:33.370 に答える
1

これはスコープの問題です。参照している変数(敵と速度)は、whileループ内のさらに下に作成されるため、変更しようとしている関数のスコープには含まれません。スコーピングルールを明確にできるはずの実行モデルを読む必要があります。

于 2012-04-28T00:47:21.163 に答える
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)

では、level() が呼び出されないのはなぜですか? これらの多くの制御フロー項目の 1 つが思い通りにいかないのではないかと思います。たとえば、敵の変数が空かどうかはわかりませんが、print があなたの味方であることはわかります。

于 2012-04-28T00:51:29.507 に答える