I get lost on muds. So I wrote a short snippet for printing out an
ascii graphical map of the surrounding rooms. Indicating what exits
are available in rooms, n, s, e and w.
Example map of 'The Temple of Midgaard' (will look odd in
proportianally spaced font)
<pre>
|
O
|
|
O--#--O
/|
|
-O-
|
</pre>
Hope it may be useful for someone and that OE hasn't messed up the
formating of the code :).
Peter
-------------------------
-- In act.informative.c, near top, prototype func
ACMD(do_map);
-- act.informative.c, wherever, actually funcs
void map_draw_room(char map[9][10], int x, int y, room_rnum rnum,
struct char_data *ch)
{
int door;
map[y][x] = 'O';
for (door = 0; door < NUM_OF_DIRS; door++) {
if (world[rnum].dir_option[door] &&
world[rnum].dir_option[door]->to_room
!= NOWHERE && !EXIT_FLAGGED(world[rnum].dir_option[door],
EX_CLOSED)) {
switch (door) {
case NORTH: map[y-1][x] = '|'; break;
case EAST: map[y][x+1] = '-'; break;
case SOUTH: map[y+1][x] = '|'; break;
case WEST: map[y][x-1] = '-'; break;
case UP: map[y-1][x+1] = '/'; break;
case DOWN: map[y+1][x-1] = '/'; break;
}
}
}
}
ACMD(do_map)
{
int door, i;
char map[9][10];
/* blank the map */
for(i=0;i<9;i++) {
strcpy(map[i], " ");
}
/* print out exits */
map_draw_room(map, 4, 4, ch->in_room, ch);
for (door = 0; door < NUM_OF_DIRS; door++) {
if (EXIT(ch, door) && EXIT(ch, door)->to_room != NOWHERE &&
!EXIT_FLAGGED(EXIT(ch, door), EX_CLOSED)) {
switch (door) {
case NORTH: map_draw_room(map, 4, 1,EXIT(ch,door)->to_room,
ch); break;
case EAST: map_draw_room(map, 7, 4,EXIT(ch,door)->to_room,
ch); break;
case SOUTH: map_draw_room(map, 4, 7,EXIT(ch,door)->to_room,
ch); break;
case WEST: map_draw_room(map, 1, 4,EXIT(ch,door)->to_room,
ch); break;
}
}
}
/* make it obvious what room they are in */
map[4][4] = '#';
/* print out the map */
for(i=0;i<9;i++) {
sprintf(buf2, "%s\r\n", map[i]);
send_to_char(buf2, ch);
}
}
-- In interpreter.c
{ "map" , POS_RESTING , do_map , 0, 0 },
---------------------------
---
Peter Howkins
marutan@marutan.net
http://www.marutan.net
http://www.arcsite.de/hp/flibble/
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT