2017-01-16 30 views
1

ここで私は今やりたいことです。関数を実行するたびに数値を増やす方法はありますか?

  1. に最低(損傷によってソートされた、すべての利用可能なカードを含むリストを作成します:単純に私は現在、カードゲームに取り組んで、私はゲームはAIのためのカードを選ぶ持っている方法は、このようなものです午前入れます最高)。このリストを「ai_list」と呼ぶことにしましょう。

  2. ai_list [index]に配置するカードを設定します。 'index'は、関数が実行されるたびに1ずつ増やしたい数値です。

だから私は現在、ゲームはターン(プレイヤー・敵プレイヤーの敵...)で実行する必要がありますが、問題は、私は0にインデックス(セットを増やす方法がわからないということですAIのカードを置くための機能が実行されるたびに開始されます。

どうすればいいですか?

+1

グローバル変数を使用してください。関数が実行されるたびにローカル変数がリセットされます。正当な理由がある多くの人々はグローバル変数を嫌うが、しばしばゲームの状態を追跡する自然な方法である。 –

+2

質問の正確なタイトルをGoogle検索にコピーして貼り付けました。その結果重複した質問が上位5つの結果にありました。あなたは新しい質問を投稿する前に、少なくとも数秒の調査を行うことが期待されます。 – TigerhawkT3

答えて

7

関数が呼び出された回数を数えたいと思うようです。あなたはそれのための非常にシンプルなデコレータを使用することができます:

def count(func): 
    def wrapper(*args, **kwargs): 
     wrapper.counter += 1 # executed every time the wrapped function is called 
     return func(*args, **kwargs) 
    wrapper.counter = 0   # executed only once in decorator definition time 
    return wrapper 

@count 
def func(): 
    pass 

print(func.counter) 
# 0 
func() 
print(func.counter) 
# 1 
func() 
print(func.counter) 
# 2 
-1

なぜグローバルを使用していないのですか? のようなもの:

index = 0 
def func(..) 

    global index 
    index+=1 
+2

一般的にはグローバル変数の使用は悪い習慣だと聞いているので、私はできるだけ避けようとしています。 –

+0

カウントしたい機能が5つある場合はどうなりますか? 5つのグローバル変数を作成しますか? – DeepSpace

関連する問題