Release 1

Book 2 - Randomizing Rooms and Directions

The X-coord maximum is a number that varies.

The X-coord maximum is 8.

The Y-coord maximum is a number that varies.

The Y-coord maximum is 8.

The current room is a room that varies.

The important room is a room that varies.

To randomize Blight rooms and directions:

let the next room be R1; [Just to satisfy the new requirements re: declaring variables.]

choose row 1 in the Table of Existing Rooms; [If it were possible to have starting null values in a table, we wouldn't have this rigamarole anyway.]

blank out the whole row;

now the location in row 1 of the Table of Existing Rooms is R1; [Putting our original room back.]

let coord-table maximum be the X-coord maximum times the Y-coord maximum; [How big is this table? Define the grid.]

let X-count be 1;

let Y-count be 1;

repeat with N running from 1 to the coord-table maximum:

now the X in row N of the Table of Coordinates is X-count;

now the Y in row N of the Table of Coordinates is Y-count;

if Y-count is the Y-coord maximum:

now Y-count is 1;

now X-count is X-count plus 1;

otherwise:

now Y-count is Y-count plus 1;

now the current room is the location in row 1 of the Table of Existing Rooms;

let X-current be a random number between 1 and the X-coord maximum;

let Y-current be a random number between 1 and the Y-coord maximum;

repeat with N running from 1 to the coord-table maximum:

if the X in row N of the Table of Coordinates is X-current and the Y in row N of the Table of Coordinates is Y-current:

now the location in row N of the Table of Coordinates is the current room;

[say "The current room ([current room]) is at [X-current] [Y-current].";]

repeat through the Table of Existing Rooms:

now the important room is the location entry;

let the next room be the location entry;

[say "[line break]**Current room: [current room] Important room: [important room] Next room: [next room]***[line break]";]

while the important room is not a location listed in the Table of Coordinates:

let the connection randomizer be a random number between 1 and 8;

[say "Connection randomized to [connection randomizer] - ";]

let X-next be 0;

let Y-next be 0;

if the connection randomizer is 1: [north]

let X-next be X-current;

let Y-next be Y-current plus 1;

otherwise if the connection randomizer is 2: [northeast]

let X-next be X-current plus 1;

let Y-next be Y-current plus 1;

otherwise if the connection randomizer is 3: [east]

let X-next be X-current plus 1;

let Y-next be Y-current;

otherwise if the connection randomizer is 4: [southeast]

let X-next be X-current plus 1;

let Y-next be Y-current minus 1;

otherwise if the connection randomizer is 5: [south]

let X-next be X-current;

let Y-next be Y-current minus 1;

otherwise if the connection randomizer is 6: [southwest]

let X-next be X-current minus 1;

let Y-next be Y-current minus 1;

otherwise if the connection randomizer is 7: [west]

let X-next be X-current minus 1;

let Y-next be Y-current;

otherwise if the connection randomizer is 8: [northwest]

let X-next be X-current minus 1;

let Y-next be Y-current plus 1;

repeat with N running from 1 to the coord-table maximum:

if the X in row N of the Table of Coordinates is X-next and the Y in row N of the Table of Coordinates is Y-next:

[say "The important room ([important room]) should be placed at [X-next] [Y-next]. ";]

if there is no location in row N of the Table of Coordinates:

[say "And, hooray, that location is empty! ";]

now the location in row N of the Table of Coordinates is the important room;

now the next room is the important room;

if the connection randomizer is 1: [north]

[say "Connecting [current room] to [next room] via a north exit.";]

now the n-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the s-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 2: [northeast]

[say "Connecting [current room] to [next room] via a northeast exit.";]

now the ne-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the sw-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 3: [east]

[say "Connecting [current room] to [next room] via an east exit.";]

now the e-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the w-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 4: [southeast]

[say "Connecting [current room] to [next room] via a southeast exit.";]

now the se-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the nw-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 5: [south]

[say "Connecting [current room] to [next room] via a south exit.";]

now the s-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the n-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 6: [southwest]

[say "Connecting [current room] to [next room] via a southwest exit.";]

now the sw-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the ne-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 7: [west]

[say "Connecting [current room] to [next room] via a west exit.";]

now the w-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the e-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

if the connection randomizer is 8: [northwest]

[say "Connecting [current room] to [next room] via a northwest exit.";]

now the nw-room corresponding to a location of the current room in the Table of Existing Rooms is the next room;

now the se-room corresponding to a location of the next room in the Table of Existing Rooms is the current room;

otherwise:

[say "Unfortunately, that row is already taken, but we can hook the directions up anyway.";]

let the blocking room be the location in row N of the Table of Coordinates;

if the connection randomizer is 1: [north]

[say "Connecting [current room] with [blocking room] to the north.";]

now the n-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the s-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 2: [northeast]

[say "Connecting [current room] with [blocking room] to the northeast.";]

now the ne-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the sw-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 3: [east]

[say "Connecting [current room] with [blocking room] to the east.";]

now the e-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the w-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 4: [southeast]

[say "Connecting [current room] with [blocking room] to the southeast.";]

now the se-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the nw-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 5: [south]

[say "Connecting [current room] with [blocking room] to the south.";]

now the s-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the n-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 6: [southwest]

[say "Connecting [current room] with [blocking room] to the southwest.";]

now the sw-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the ne-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 7: [west]

[say "Connecting [current room] with [blocking room] to the west.";]

now the w-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the e-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

if the connection randomizer is 8: [northwest]

[say "Connecting [current room] with [blocking room] to the northwest.";]

now the nw-room corresponding to a location of the current room in the Table of Existing Rooms is the blocking room;

now the se-room corresponding to a location of the blocking room in the Table of Existing Rooms is the current room;

now the current room is the blocking room;

[say "Continuing from [blocking room] (current room [current room], next room [next room], important room [important room])....";]

now X-current is the X corresponding to a location of the current room in the Table of Coordinates;

now Y-current is the Y corresponding to a location of the current room in the Table of Coordinates;

now the current room is the important room;

now X-current is the X corresponding to a location of the current room in the Table of Coordinates;

now Y-current is the Y corresponding to a location of the current room in the Table of Coordinates;

move the player to R1;

repeat with N running from 1 to the number of rows in the Table of Existing Rooms:

now the current room is the location in row N of the Table of Existing Rooms;

if there is an n-room in row N of the Table of Existing Rooms:

now the next room is the n-room in row N of the Table of Existing Rooms;

change the north exit of the current room to the next room;

change the south exit of the next room to the current room;

if there is a ne-room in row N of the Table of Existing Rooms:

now the next room is the ne-room in row N of the Table of Existing Rooms;

change the northeast exit of the current room to the next room;

change the southwest exit of the next room to the current room;

if there is an e-room in row N of the Table of Existing Rooms:

now the next room is the e-room in row N of the Table of Existing Rooms;

change the east exit of the current room to the next room;

change the west exit of the next room to the current room;

if there is an se-room in row N of the Table of Existing Rooms:

now the next room is the se-room in row N of the Table of Existing Rooms;

change the southeast exit of the current room to the next room;

change the northwest exit of the next room to the current room;

if there is an s-room in row N of the Table of Existing Rooms:

now the next room is the s-room in row N of the Table of Existing Rooms;

change the south exit of the current room to the next room;

change the north exit of the next room to the current room;

if there is an sw-room in row N of the Table of Existing Rooms:

now the next room is the sw-room in row N of the Table of Existing Rooms;

change the southwest exit of the current room to the next room;

change the northeast exit of the next room to the current room;

if there is an w-room in row N of the Table of Existing Rooms:

now the next room is the w-room in row N of the Table of Existing Rooms;

change the west exit of the current room to the next room;

change the east exit of the next room to the current room;

if there is an nw-room in row N of the Table of Existing Rooms:

now the next room is the nw-room in row N of the Table of Existing Rooms;

change the northwest exit of the current room to the next room;

change the southeast exit of the next room to the current room.