def generateRooms(self, numRooms): """ Generate a random graph of rooms """ self.rooms = {} if numRooms < 1: print("Must create at least 1 room") return None # The coordinates of our room. We start from (0,0) xy = [0, 0] # Keep track of which grid spots are occupied self.occupied = set() # Create a set that will hold the IDs of rooms with valid connections available validRooms = set() # Create n rooms for i in range(0, numRooms): # Create a room new_room = Room(f"Room {i}", "You are standing in an empty room.") self.rooms[i] = new_room if i == 0: # Our first room is always valid validRooms.add(i) self.occupied.add(str(xy)) else: # If it's not the first room.... # ...connect to the previous room in a random direction random_dir = None # In case we run into a room with no valid connections, keep looping # until we find a room with valid connections. # Note that there will ALWAYS be a valid room available while random_dir is None: # Get a room that we think is valid connectingRoom = validRooms.pop() # Get the coordinates of that room xy = self.rooms[connectingRoom].xy # See if we can get a random direction from that room random_dir = self.getRandomDirection( self.rooms[connectingRoom], xy) # If our room is valid (i.e. not None) then we put it back in our # set of valid rooms. if random_dir is not None: validRooms.add(connectingRoom) # If it's NOT valid, then we don't put it back into validRooms # and we try again with a different room. # We have a valid direction, so update the room and make the connection xy = self._updateCoordinates(xy, random_dir) self.rooms[connectingRoom].connectRooms(random_dir, new_room) self.occupied.add(str(xy)) new_room.xy = xy validRooms.add(i) if i == numRooms - 1: new_room.addItem(Item("Treasure", "This is treasure")) # Set the starting room to the first room. Change this if you want a new starting room. self.startingRoom = self.rooms[0] if len(self.occupied) == numRooms: print("World successfully created!") else: print("Something is wrong....") return self.rooms
def createRooms(self): #Salas sala = Room("sala") comedor = Room("comedor") cocina = Room("cocina") lavadero = Room("lavadero") jardin = Room("jardin") pasillo = Room("pasillo") dormitorio = Room("dormitorio") baño = Room("baño") balcon = Room("balcon") #Definimos las salas cerradas garaje = lockedRoom("garaje") #Definimos salidas garaje.setExit('east', sala) sala.setExit('north', comedor) sala.setExit('east', pasillo) sala.setExit('west', garaje) comedor.setExit('north', lavadero) comedor.setExit('east', cocina) comedor.setExit('south', sala) cocina.setExit('north', jardin) cocina.setExit('west', comedor) lavadero.setExit('south', comedor) jardin.setExit('south', cocina) pasillo.setExit('up', dormitorio) pasillo.setExit('west', sala) dormitorio.setExit('north', baño) dormitorio.setExit('east', balcon) dormitorio.setExit('down', pasillo) baño.setExit('south', dormitorio) balcon.setExit('west', dormitorio) #Definimos items lampara = Item('lampara', 'Una lámpara rota', 2) botella = Item('botella', 'Una botella vacía', 3) zapato = Item('zapato', 'Un zapato', 1.5) heladera = Item('heladera', 'Una heladera', 8) lavarropas = Item('lavarropas', 'Lavarropas', 10) tender = Item('tender', 'Un tender con ropa', 6) muñeco = Item('muñeco', 'Un muñeco de trapo', 3) cuadro = Item('cuadro', 'Un cuadro', 2) banco = Item('banco', 'Un banco', 4) mesa = Item('mesa', 'Una mesa de madera', 6) espejo = Item('espejo', 'Un espejo', 3) computadora = Item('computadora', 'Una computadora de escritorio', 6) cama = Item('cama', 'Una cama', 7) linterna = Item('linterna', 'Una linterna', 1) #Definimos items comestibles con sus respectivas propiedades. manzana = Comestible('manzana', 'Una manzana ordinaria', 1, 0, None) galleta = Comestible('galleta', 'Una galleta mágica', 2, 2, 'weight') #Definimos items utilizables, con su respectiva función. key = Usable('llave', 'Llave maestra', 1, 'key') beamer = Usable('portalgun', 'Arma de portales', 3, 'teleport') #Definimos cofres magic_box = Chest('Cofre', 'Magico cofre con muchos tesoros dentro', 1000, [manzana, galleta, espejo]) #Añadiendo items a las distintas salas. comedor.addItem(zapato) sala.addItem(linterna) sala.addItem(lampara) cocina.addItem(botella) cocina.addItem(heladera) lavadero.addItem(lavarropas) jardin.addItem(tender) jardin.addItem(muñeco) pasillo.addItem(cuadro) balcon.addItem(banco) balcon.addItem(mesa) baño.addItem(espejo) dormitorio.addItem(cama) dormitorio.addItem(galleta) dormitorio.addItem(computadora) sala.addItem(manzana) sala.addItem(beamer) sala.addItem(key) sala.addItem(magic_box) #Definimos misiones mision1 = Mission('1ra mision', 'Llegar al dormitorio en menos de 10 movimientos', 10, 'checkpoint', 'dormitorio') #Definiendo NPC mago = NPC('Mago', sala, 'Traeme un arma de portales y te devolveré una galleta', beamer, galleta) aprendiz = NPC( 'Aprendiz', cocina, 'Bienvenido a Zuul, revisa toda la casa para encontrar objetos importantes' ) #Agregandolo a la sala sala.addNPC(mago) cocina.addNPC(aprendiz) #Definiendo jugador self.player = Player('Peter', None, 0) self.player.addMission(mision1) #Definiendo sala self.currentRoom = sala self.player.setActualRoom(self.currentRoom) return
outside.n_to = foyer foyer.s_to = outside foyer.n_to = overlook foyer.e_to = narrow overlook.s_to = foyer narrow.w_to = foyer narrow.n_to = treasure treasure.s_to = narrow # Add items to rooms narrow.addItem(treasureX) narrow.addItem(key) outside.addItem(treasureY) outside.addItem(mirror) foyer.addItem(flashlight) overlook.addItem(treasureZ) # Basic user commands def print_user_controls(): global score print("\n ~ Directions: move [n, s, e, w]") print(" ~ Actions: [get, drop, use] item")