2017-01-16 107 views
1

所以這就是我現在想要做的。簡單地說,我目前工作的一個紙牌遊戲,我有比賽挑卡人工智能的方法是這樣的:如何在每次運行一個函數時增加一個數字?

  1. 使包含所有可用的牌,由損壞排序的列表(最低至最高)。我們稱之爲'ai_list'

  2. 將要放置的卡(enemy_card)設置爲ai_list [index]。 'index'是每次函數運行時我想增加的數字。

所以我目前擁有的遊戲執行輪流(玩家敵方玩家敵人......),但問題是,我不知道如何來增加指數(設置爲0的開始)每次AI的卡放置功能運行。

我該怎麼做?

+1

使用全局變量。每次運行該函數時都會重置局部變量。許多人(有充分理由)對全局變量不滿,但他們往往是追蹤遊戲狀態的一種自然方式。 –

+2

我將您的問題的確切標題複製粘貼到Google搜索中,得到的重複問題位於前五位的結果中。在發佈新問題之前,您需要至少進行幾秒鐘的研究。 – 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

相關問題