Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func linkRooms(roomX, roomY, direction):
- if direction == "N":
- rooms[roomX, roomY].N = true
- rooms[roomX, roomY+1].S = true
- else if direction = "E":
- rooms[roomX, roomY].E = true
- rooms[roomX+1, roomY].W = true
- // repeat for W and S
- func roomIsSet(roomX, roomY):
- return rooms[roomX, roomY].N == true ||
- rooms[roomX, roomY].S == true ||
- rooms[roomX, roomY].E == true ||
- rooms[roomX, roomY].W == true
- func pickEmptyAdjacentToNotEmpty():
- foreach room in random order:
- // only look for empty rooms
- if !room.IsSet(room.x, room.y):
- adjacentRooms = [empty list]
- // Find all the adjacent rooms that aren't unvisited
- if room.IsSet(room.x + 1, room.y):
- adjacentRooms += rooms[room.x + 1, room.y]
- if room.IsSet(room.x - 1, room.y):
- adjacentRooms += rooms[room.x - 1, room.y]
- if room.IsSet(room.x, room.y + 1):
- adjacentRooms += rooms[room.x, room.y + 1]
- if room.IsSet(room.x, room.y - 1):
- adjacentRooms += rooms[room.x, room.y - 1]
- if len(adjacentRooms) > 0:
- return random entry from adjacentRooms
- func randomlyAddNewRoomToMap():
- newRoom, adjacentNotEmptyRoom = pickEmptyAdjacentToNotEmpty()
- linkRooms(newRoom, adjacentNotEmptyRoom)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement