SHOW:
|
|
- or go back to the newest paste.
1 | func linkRooms(roomX, roomY, direction): | |
2 | if direction == "N": | |
3 | rooms[roomX, roomY].N = true | |
4 | rooms[roomX, roomY+1].S = true | |
5 | else if direction = "E": | |
6 | rooms[roomX, roomY].E = true | |
7 | - | rooms[roomX+1, roomY].W = false |
7 | + | rooms[roomX+1, roomY].W = true |
8 | // repeat for W and S | |
9 | ||
10 | func roomIsSet(roomX, roomY): | |
11 | return rooms[roomX, roomY].N == true || | |
12 | rooms[roomX, roomY].S == true || | |
13 | rooms[roomX, roomY].E == true || | |
14 | rooms[roomX, roomY].W == true | |
15 | ||
16 | func pickEmptyAdjacentToNotEmpty(): | |
17 | - | // Pick a random room that's not set that's adjacent to a room that IS set |
17 | + | foreach room in random order: |
18 | // only look for empty rooms | |
19 | if !room.IsSet(room.x, room.y): | |
20 | adjacentRooms = [empty list] | |
21 | // Find all the adjacent rooms that aren't unvisited | |
22 | if room.IsSet(room.x + 1, room.y): | |
23 | adjacentRooms += rooms[room.x + 1, room.y] | |
24 | if room.IsSet(room.x - 1, room.y): | |
25 | adjacentRooms += rooms[room.x - 1, room.y] | |
26 | if room.IsSet(room.x, room.y + 1): | |
27 | adjacentRooms += rooms[room.x, room.y + 1] | |
28 | if room.IsSet(room.x, room.y - 1): | |
29 | adjacentRooms += rooms[room.x, room.y - 1] | |
30 | ||
31 | if len(adjacentRooms) > 0: | |
32 | return random entry from adjacentRooms | |
33 | ||
34 | func randomlyAddNewRoomToMap(): | |
35 | newRoom, adjacentNotEmptyRoom = pickEmptyAdjacentToNotEmpty() | |
36 | linkRooms(newRoom, adjacentNotEmptyRoom) |