"""Dungeon Set Generator, by Kris Schnee. Sketch of a system that creates a series of "dungeon" areas for a game, mindful of what items the player has available in each dungeon.""" ITEMS = ["bombs","boomerang","hookshot","wand","bow","boots"] HOW_MANY_DUNGEONS = 3 ROOMS_PER_DUNGEON = 10 ROOM_LAYOUTS = [("simple1",None),("simple2",None),("simple3",None),("simple4",None), ("block_puzzle1",None),("block_puzzle2",None), ("monster_horde",None), ("room_fulla_pits",None), ("miniboss",None), ("need_bombs1","bombs"),("need_bombs2","bombs"), ("need_bow1","bow"),("need_bow2","bow"), ("need_boomerang","boomerang"), ("need_hookshot","hookshot"), ("need_wand","wand"), ("need_boots","boots"), ] import random items_not_gotten = ITEMS[:] items_player_has = [] dungeons = [] def MakeDungeonSet(how_many=4): for n in range(how_many): found_item = items_not_gotten[ random.randint(0,len(items_not_gotten)-1) ] items_not_gotten.remove(found_item) items_player_has.append(found_item) dungeons.append( (MakeDungeon(items_player_has), found_item) ) return dungeons def MakeDungeon(items_player_has): """Dummy function mostly; use w/map generator.""" rooms = [] for n in range(ROOMS_PER_DUNGEON): possible_layouts = [r for r in ROOM_LAYOUTS if (not r[1]) or (r[1] in items_player_has)] r = possible_layouts[ random.randint(0,len(possible_layouts)-1) ] rooms.append(r) return rooms dungeons = MakeDungeonSet(HOW_MANY_DUNGEONS) for n in range(HOW_MANY_DUNGEONS): print "Dungeon #"+str(n+1)+":\nItem Found Here: "+dungeons[n][1]+"\nSet of rooms:" for r in dungeons[n][0]: print " "+r[0]