• Как правильно использовать глобальные переменные и какие аналогиченые методы global есть в Питоне?

    @quantsol Автор вопроса
    angru: написал как ответ на вопрос, а то в комментарии, видимо, код нельзя вставлять. Спасибо еще раз!
  • Как правильно использовать глобальные переменные и какие аналогиченые методы global есть в Питоне?

    @quantsol Автор вопроса
    весь текст игры:
    # -*- coding: utf-8 -*-
    
    from sys import exit
    
    items = []
    dead_man = False
    print "Вы – охотник за привидениями и Ваша цель попасть в заброшенный дом."
    print "Сейчас Вы стоите перед этим самым домом."
    print "Слева от Вас находится сарай, по центру – дом, справа – дорога."
    print "Куда Вы пойдете?"
    
    def start():
        
        while True:
            choice = raw_input()
            
            if "ключ" in items and ("дом" in choice or "цен" in choice):
                print "Ура! Вы зашли в дом!"
                print "Поздравляю, вы прошли игру!"
                print "Продолжение следует..."
                exit()
            elif "ключ" not in items and ("дом" in choice or "цен" in choice):
                print "Вы подошли к дому, но у вас нет ключа, чтобы открыть его."
                print "Кстати, дом можно обойти. Хотите посмотреть, что есть сзади?"
                behind()
            elif "нап" in choice or "дор" in choice:
                print "Вы решили выйти на дорогу. Куда пойдете в левую сторону или в правую?"
                road()
            elif "нал" in choice or "сар" in choice:
                print "Вы решили дойти до сарая. Сарай закрыт на висячий замок."
                print "Хотите попробовать открыть сарай?"
                barn()
            else:
                print "Не понимаю вас."
                
    def road():
        while True:
            choice = raw_input()
            
            if dead_man == True and ("нал" in choice or "лев" in choice):
                print "Вампир убит, тут делать больше нечего."
                start()    
            elif "нал" in choice or "лев" in choice:
                print "Вы пошли налево и встретили человека."
                print "Что вы хотите с ним сделать?"
                print "1. Поговорить с ним. Вдруг он расскажет что-нибудь полезное?"
                print "2. Убить его. От него исходит слабое свечение, кажется, он нечитсь."
                choice = raw_input()
                
                if "топор" not in items and choice == "2":
                    print "Попытаться убить человека голыми руками – плохое решение."
                    print "Мужчина с нечеловеческой скоростью переместился за вашу спину и сломал Вам шею."
                    print "Game Over"
                    exit()
                elif "топор" in items and choice == "2":
                    print "Мужчина оказался высшим вампиром. Наверняка он хотел заманить Вас в дом и съесть Вас."
                    print "Ваши инстинкты не подвели вас, повезло, что вы его зарубили."
                    print "Больше ничего тут вы не обнаружили и решили вернуться к дому."
                    global dead_man
                    dead_man = True
                    start()
                elif choice == "1":
                    print "Мужчина оказался поклонником охотников за привидениями."
                    print "Он рассказал вам, что семья в доме была жестоко убита, но владелец дома успел закопать ключ."
                    print "Не зная, как больше вам помочь, он дал вам серебрянный топор. Осталось найти чем можно копать и сама место, где нужно копать."
                    print "Вы снова вернулись к заброшенному дому."
                    items.extend(["топор"])
                    start()
                else:
                    print "Вы вводите что-то не то. Научитесь печатать!"
            
            elif "карта" in items and "лопата" in items  and ("нап" in choice or "пра" in choice):
                print "Вы нашли место, где закопан клад, и начали рыть землю лопатой."
                print "Ваши старания увенчались успехом! Вы нашли ключ от дома! Осталось лишь открыть дверь!"
                print "Вы вновь пришли к дому."
                items.extend(["ключ"])  
                start()     
                
            elif "карта" in items and ("нап" in choice or "пра" in choice):
                print "Вы нашли место, где зарыт клад. К сожалению, у Вас нечем копать. Хотите попробовать копать руками?"
                choice = raw_input(">:")
                if choice == "да":
                    print "Вы попробовали вырыть яму руками, но обнаружили, что земля оказалась ядовитой!"
                    print "Яд быстро распространился по телу и вы умерли."
                    exit()
                elif choice == "нет":
                    print "Действительно, зачем копать землю руками?" 
                    print "Вы решили вернуться к дому и поискать лопату."
                    start()
                else:
                    print "Вы вводите что-то не то. Научитесь печатать!"
                    
            elif "карта" not in items and ("нап" in choice or "пра" in choice):
                print "Дорога окончилась тупиком. Осмотрев местность, вы ничего не нашли и вернулись к дому."
                start()
            else:
                print "Научитесь печатать!"
            
                    
    def barn():
        while True:
            choice = raw_input(">:")
            
            if "топор" in items and "да" in choice or "хочу" in choice:
                print "Вам удалось сбить замок с помощью топора."
                print "В сарае вы нашли лопату, больше ничего интересного тут нет."
                print "И вновь вы оказались перед домом."
                items.extend(["лопата"])
                start()
            elif "топор" not in items and "да" in choice or "хочу" in choice:
                print "Замок заржавел и даже если у вас получится найти ключ от него,"
                print "то вряд ли вы сможете открыть его."
                print "Придется вернуться к дому и начать поиски сначала."
                print "И вновь вы стоите перед заброшенным домом.."
                start()
            elif "нет" in choice:
                print "Вы решили пока не трогать замок и вернулись назад к дому."
                start()
            else:
                print "Научитесь печать два слова: 'да' и 'нет'."
                
    def behind():
        while True:
            choice = raw_input(">:")
            
            if choice == ("да" or "хочу" in choice) and "карта" in items:
                print "Больше на заднем дворе ничего нет. Вы вернулись к дому."
                start()
            elif choice == "да" or "хочу" in choice:
                print "Убедившись, что задняя дверь дома тоже закрыта, вы внимательно осмотрели двор."
                print "Увидев беседку в нем, вы зашли в нее и нашли сложенную бумажку."
                print "Развернув лист бумаги, вы поняли что это – карта местности, на которой"
                print "был отмечен правый тупик дороги. Что же там может быть закопано?!"
                print "Больше на заднем дворе ничего интересного нет. Вы вернулись ко входу дома."
                items.extend(["карта"])
                start()
            elif "нет" in choice:
                print "Решив не проверять, что находится сзади дома, вы вернулись оттуда, откуда начинали."
                print "Куда пойдете? К сараю, к дому или на дорогу?"
                start()
            else:
                print "Научитесь печать два слова: 'да' и 'нет'."
            
    start()
  • Как правильно использовать глобальные переменные и какие аналогиченые методы global есть в Питоне?

    @quantsol Автор вопроса
    Понял, за советы отдельное спасибо!

    До классов дошел, начинаю ими потихоньку пользоваться..
    А можете, если не сложно, привести пример решения, используя классы? :)