2017-01-16 2 views
1

Итак, вот что я хочу сделать прямо сейчас. Проще говоря я в настоящее время работает над карточной игрой и тем, как у меня есть игра выбрать карты для ИИ, как это:Как увеличить число при каждом запуске функции?

  1. Составьте список, содержащий все доступные карты, отсортированные по повреждению (Наименьшее к наибольший). Назовем этот список 'ai_list'

  2. Установите карту, которая будет размещена (вражеская карта), на 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

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