class Scene(object):
    def enter(self):
        pass

class Beginning(Scene):
    def enter(self):
        print "Beginning Scene"
        return 'troll'
		
class Troll(Scene):
    def enter(self):
       print "Troll Scene"
       return 'soldier'
        
class Soldier(Scene):
    def enter(self):
        print "Soldier Scene"
        return 'dragon'
        
class Dragon(Scene):
    def enter(self):
        print "Dragon Scene"
        return 'treasure'
        
class Treasure(Scene):
    def enter(self):
        print "Treasure Scene"
        win = True
        return 'death'
        
class Death(Scene):
    def enter(self):
        if (win == True):
            print "Yay! You win!"
        else:
            print "Sorry. You died."
        return 'finished'
        
class Map(object):
    scenes = {
        'beginning' : Beginning(),
        'troll' : Troll(),
        'soldier' : Soldier(),
        'dragon' : Dragon(),
        'treasure' : Treasure(),
        'death' : Death(),
    }
    
scene_name = 'beginning'
final_scene = 'finished' 
win = False
while scene_name != final_scene:
    current_scene = Map.scenes.get(scene_name)
    scene_name = current_scene.enter()
		