2017-02-10 1 views
0

Итак, заголовок довольно понятный, но я расскажу подробнее. Я создаю текстовую зависимую игру, и у меня будут миллионы областей. И каждый раз, когда вы входите в новую область, вам будет встречено с один раз только иной реакции, чем если бы вы пришли в то же место позже, и мне нужно найти способ, чтобы это:Python: «Если строка вызывается в первый раз, сделайте что-нибудь еще»

if len(line) == 1: 
    do exclusive thing 
else: 
    do normal thing 

Sure , Я мог бы использовать систему счетчиков типа «a = 0», но тогда мне нужно было бы создать отдельный счетчик для каждой отдельной области, которую я создаю, и я не хочу этого.

+1

Поставьте флаг на вашем Класс «Комната», указывающий, введен ли он еще. – kindall

+0

как ?, и структура данных моей игры, отличается от своего более сюжетного режима любопытной игрой – DuckyQuack

+1

Например, определите 'посещения = 0' на классе и увеличьте его при входе в комнату (' self.visits + = 1'). (Использование счетчика, а не флага дает вам большую гибкость, если вы позже решите, что что-то должно произойти, если игрок перейдет в одну комнату десять раз или что-то еще.) – kindall

ответ

1

Вы можете просто хранить один dict отслеживать посещение номеров, и, возможно, даже лучше использовать defaultdict

from collections import defaultdict 

#Using a defaultdict means any key will default to 0 
room_visits = defaultdict(int) 

#Lets pretend you had previously visited the hallway, kitchen, and bedroom once each 
room_visits['hallway'] += 1 
room_visits['kitchen'] += 1 
room_visits['bedroom'] += 1 

#Now you find yourself in the kitchen again 
current_room = 'kitchen' 
#current_room = 'basement' #<-- uncomment this to try going to the basement next 

#This could be the new logic: 
if room_visits[current_room] == 0: #first time visiting the current room 
    print('It is my first time in the',current_room) 
else: 
    print('I have been in the',current_room,room_visits[current_room],'time(s) before') 

room_visits[current_room] += 1 #<-- then increment visits to this room 
+0

Спасибо! Это действительно помогло моей проблеме – DuckyQuack

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