rendered paste bodyimport osdef Game(FileName): def LoadGame(FileName): def CreateRoom(DataRecord, GameData): def ParseVariableRecords(VariableRecords, Deliminator): def AssignVariableRecordToRecords(VariableRecord, Records): Records[VariableRecord[0]] = VariableRecord[1] return ParsedVariableRecords = {} if VariableRecords == '': return {} for VariableRecord in VariableRecords.split(Deliminator): AssignVariableRecordToRecords(VariableRecord.split('='), ParsedVariableRecords) return ParsedVariableRecords #Record Columns ID = 0 RoomName = 1 RoomDescription = 2 Exits = 3 HiddenExits = 4 FreeActions = 5 RoomRecord = {} RoomRecord["RoomName"] = DataRecord[RoomName] RoomRecord["Description"] = DataRecord[RoomDescription] RoomRecord["Exits"] = ParseVariableRecords(DataRecord[Exits], ',') RoomRecord["HiddenExits"] = ParseVariableRecords(DataRecord[HiddenExits], ',') RoomRecord["FreeActions"] = ParseVariableRecords(DataRecord[FreeActions], '\\') GameData[DataRecord[ID]] = RoomRecord return GameData = {} for DataRecord in open(FileName, 'r'): CreateRoom(DataRecord.rstrip(os.linesep).split('|'), GameData) return GameData def RunGame(GameData): def DisplayRoom(Room): print print Room["RoomName"] print Room["Description"] print "Exits: %s" % (', '.join(Room["Exits"].keys()),) return def PlayerInteraction(Input, CurrentRoom): def DisplayAndChangeToRoom(Room): DisplayRoom(Room) return Room if Input == "look": DisplayRoom(CurrentRoom) elif CurrentRoom["Exits"].has_key(Input): return DisplayAndChangeToRoom(GameData[CurrentRoom["Exits"][Input]]) elif CurrentRoom["HiddenExits"].has_key(Input): return DisplayAndChangeToRoom(GameData[CurrentRoom["HiddenExits"][Input]]) elif CurrentRoom["FreeActions"].has_key(Input): print CurrentRoom["FreeActions"][Input] else: print "Sorry, I don't understand." return CurrentRoom CurrentRoom = GameData["Start"] DisplayRoom(CurrentRoom) while True: CurrentRoom = PlayerInteraction(raw_input("> ").lower(), CurrentRoom) return RunGame(LoadGame(FileName))Game("game.txt")