class World(object): def __init__(self, world_actions=[], entities={}): self.actions = world_actions self.entities = entities def load(self, fname): lines = open(fname, 'r').readlines() i = 0 while i < len(lines): line = lines[i].rstrip('\n') if line != '' and not line.startswith('#'): if line.startswith('create'): self.entities[line.split(' ')[1]] = {} elif line.startswith('set'): self.entities[line.split(' ')[1]][line.split(' ')[-1]] = True i += 1 def get_entity(self, predicates): if not isinstance(predicates, list): raise InputError(predicates, 'is not a list.') return_val = [] for k in self.entities: if all([predicate in self.entities[k] and self.entities[k][predicate] is True for predicate in predicates]): return_val += [k] return return_val def get_actors(self): return self.get_entity(['is_actor', 'is_god']) def get_containers(self): return self.get_entity(['is_thing', 'is_container']) def get_locations(self): return self.get_entity(['is_location']) def get_objects(self): return self.get_entity(['is_thing', 'is_gettable'])