Re: [CODE] The Mapsnippet

From: Francis Hotchkiss (fhotch@buffnet.net)
Date: 11/11/98


Hello,
   I saw what you are trying to do and thought I might help.
I wrote a very small map code that does what you want( just
maps the sectors of each room, and it's surrounding....) .

  What my code does is: (examples are in pseudo-code)
    -creates an array x by y,
    -finds the center of that array,
    -takes the sector type number of the room that the character
     is in and runs it through a const char string.

     Here's a rough example of what I mean, it assumes 4 sectors
     exist(forest, road, hill, swamp):
       #define MAP_WIDTH 5
       #define MAP_HIEGHT 5
       #define MAP_ROOMS (MAP_WIDTH * MAP_HEIGHT)
       char map_chars[MAP_ROOMS][4]; (4 chars to allow for an easy-color
code)
       const char *sector_symbols[] = { "+", ".", "^", "*" };
       int map_rnums[MAP_ROOMS], i;
       for(i = 0, i < MAP_ROOMS, i++) {
         map_rnums[i] = 0;
         map_chars[i] = '\0';
       }
       map_rnum[17] = IN_ROOM(ch)
       sprintf(map_chars[17], sector_symbols[SECTOR(map_rnum[17])]);
       map_rnum[17 - MAP_WIDTH] = EXIT(ch, 0)->to_room;
       map_rnum[17 + 1] = EXIT(ch, 1)->to_room;
       map_rnum[17 + MAP_WIDTH] = EXIT(ch, 2)->to_room;
       map_rnum[17 - 1] = EXIT(ch, 3)->to_room;

     -then it maps the sectors for those values, goes through those rooms,
      retrieves the values for the next room and so on.....


   The whole thing can be put into a couple of functions that call each
other(hint:
a couple of for() loops makes this a lot easier......). This birds-eye view
"wilderness" map is in a file around 300 lines long in case you wanted to
know...

Anyways, I hope this helps :)

-Astaroth
Head Coder and Co-Owner of GatewayMUD
(gatewaymud.dyn.ml.org port 5000)

----------
> From: Christoffer Lundberg <avatar@orion.boden.se>
> To: CIRCLE@post.queensu.ca
> Subject:  [CODE] The Mapsnippet
> Date: Wednesday, November 11, 1998 10:08 AM
>
> I have checked the mapsnip.txt file from the ftp site,
> and I think it is a bit unnecessary to do all those map-
> drawings. I was only thinking of a simple code that
> finds the SECT from each adjoining room, and then translates
> them into symbols. Then it will go to those room's adjoining
> rooms and find their SECT too. I have only figured out how
> to read the adjoining rooms to the room you are in, not to
> the adjoining rooms' adjoined rooms (sounds complicated?).
>
> Can I really write like this ?:
>
> switch (SECT(EXIT(ch, EXIT(ch, 0)->to_room)->to_room)) {
>
> Doesn't this take the SECT from the room to the north of
> the character, and the same room again. I am looking for
> some function that can sort of count the "door" as the
> room to the north, not the room ch is in.
>   With "door" I mean that the function looks like this:
>
> #define EXIT(ch, door) (blah blah blah.........)
>
> Well, in that #define, the door is taken from ch->in_room, but
> I want it to be EXIT->to_room or something. Hmm, this was
> not as easy to explain as I thought. Well, hope you get the
> point.
>
> >Christoffer
>
>
>      +------------------------------------------------------------+
>      | Ensure that you have read the CircleMUD Mailing List FAQ:  |
>      | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
>      +------------------------------------------------------------+


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST