4

私はPythonでゲームを作成しており、そのように設定されたコードがいくつかあります。

istouching = False
death = True

def checkdead():
    if istouching:
        print "Is touching"     
        death = True

while death is False:
    print death
    game logic

「触れている」と印刷されるので、ゲームロジックが機能していることはわかっていますが、死の値を印刷すると、それは誤りのままです。何か助けはありますか?

4

3 に答える 3

4

global関数内のグローバル変数を変更するために使用します。変更しない場合、 death=Trueinsidecheckdead()は実際に新しいローカル変数を定義します。

def checkdead():
    global death
    if istouching == True:      #use == here for comparison
        print "Is touching"     
        death = True
于 2012-10-16T00:36:50.550 に答える
4

戻りcheckdead値を作成します。

def checkdead():
    if istouching:
        print "Is touching"     
        return True

death = checkdead()

global@AshwiniChaudharが示すように、を使用することもできますが、グローバルを変更する関数ではなく、値を返す関数を作成することをお勧めします。このような関数は、単体テストがより簡単であり、どの外部変数が変更されるかを明示するためです。

PS。if istouching = True条件式内で変数を割り当てることができないため、SyntaxErrorが発生するはずです。

代わりに、

if istouching:
于 2012-10-16T00:37:09.637 に答える
1

それはスコープに関連しています。

death = False        
def f():
    death = True      # Here python doesn't now death, so it creates a new, different variable
f()
print(death)          # False

death = False       
def f():
    global death
    death = True
f()
print(death)      # True
于 2012-10-16T00:51:44.907 に答える