2012-05-12 6 views
2

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

У меня есть один файл Python/модуль с именем номер заполнен с классами, например:

class Intro(object): 

    def __init__(self): 
     # Setting up some variables here 

    def description(self): 
     print "Here is the description of the room you are in" 

Но это все круто и все такое право? Затем на другой файл/модуль, названный Engine. У меня есть это:

import rooms 

class Engine(object): 

    def __init__(self, first_class): 
     self.lvl = first_class 

    def play_it(self): 
     next_lvl = self.lvl 

     while True: 
      # Get the class we're in & run its description 
      next_lvl.description() # it works. 
      # But how do I get the next class when this class is done? 

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

+0

Посмотрите на [State Pattern] (http://en.wikipedia.org/wiki/State_pattern) ... –

ответ

3

Делегировать выбор того, какой класс использовать в комнатах. Например

class Intro(object): 

    def __init__(self): 
     # Setting up some variables here 

    def description(self): 
     print "Here is the description of the room you are in" 

    def north(self): 
     return Dungeon() 

    def west(self): 
     return Outside() 

    #etc 

Так что, когда игрок говорит «на запад» в комнате интро, Двигатель вызывает room.west()Intro и номер возвращает Outside номер.

Надеюсь, этого достаточно подсказки! Я ожидаю, что вы захотите создать свой собственный дизайн.

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