def __init__(self, room_type = None, colours = None, is_choice_room = False, possible_prize = None, prize = None, depth = 0, options = None, last_pos = None): self.adjacent = {} self.room_type = room_type self.is_choice_room = is_choice_room if prize == None: self.prize = [None, 0, False] else: self.prize = prize self.depth = depth self.options = options if colours == None: self.colours = self.generate_colours(self.room_type) else: self.colours = colours self.last_pos = last_pos self.prize_infos = [ReadFile.get_option() for x in range(3)] #This contains three instances of ReadFile.get_option(). self.prize_infos[1] = None #overwrite middle one so now cue in centre #This is just a detailed version of prize_order. In fact, prize order only exists #since it was made before prize_info was needed, and it is now hard to remove. self.prize_order = [None, None, None]
def step(self, direction, hall_type = Hallways.TRIFURC): if direction not in self.position.adjacent: #Not visited new_pos = MazeComponent(hall_type) new_pos.last_pos = self.position if self.position.is_choice_room: #In a choice room new_pos.is_choice_room = False self.assign_possible_prize(new_pos, direction) new_pos.depth = 1 new_pos.options = ReadFile.get_option(new_pos.prize[0]) self.set_has_prize(new_pos) #Winner? else: #In a `straight' choiceless room if direction in [Directions.LEFT, Directions.RIGHT]: #the user turns new_pos.is_choice_room = True #Determine order o' prizes new_pos.set_prize_order(self.generate_prize_order()) elif direction == Directions.FORWARDS: #User proceeds forward #default of is_choice_room is false new_pos.prize[0] = self.position.prize[0] new_pos.depth = self.position.depth + 1 new_pos.options = self.position.options self.set_has_prize(new_pos) #Winner? self.position.adjacent[direction] = new_pos #Allow yourself to go backwards if direction == Directions.FORWARDS: new_pos.adjacent[Directions.BACKWARDS] = self.position elif direction == Directions.BACKWARDS: new_pos.adjacent[Directions.FORWARDS] = self.position elif direction == Directions.LEFT: new_pos.adjacent[Directions.BACKWARDS] = self.position elif direction == Directions.RIGHT: new_pos.adjacent[Directions.BACKWARDS] = self.position self.position = new_pos elif self.position.adjacent[direction] != None: self.position.adjacent[direction].last_pos = self.position self.position = self.position.adjacent[direction] self.position.prize = [self.position.prize[0], 0, False]