[BACK]Return to wump.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / games / wump

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/games/wump/wump.c between version 1.21 and 1.22

version 1.21, 2007/12/15 19:44:45 version 1.22, 2008/01/28 01:06:19
Line 410  shoot(room_list)
Line 410  shoot(room_list)
         char *room_list;          char *room_list;
 {  {
         int chance, next, roomcnt;          int chance, next, roomcnt;
         int j, arrow_location, link, ok;          int j, arrow_location, lnk, ok;
         char *p;          char *p;
   
         /*          /*
Line 451  shoot(room_list)
Line 451  shoot(room_list)
                         } else                          } else
                                 arrow_location = next;                                  arrow_location = next;
                 } else {                  } else {
                         link = (random() % link_num);                          lnk = (random() % link_num);
                         if (link == player_loc)                          if (lnk == player_loc)
                                 (void)printf(                                  (void)printf(
 "*thunk*  The arrow can't find a way from %d to %d and flys back into\n\  "*thunk*  The arrow can't find a way from %d to %d and flys back into\n\
 your room!\n",  your room!\n",
                                     arrow_location, next);                                      arrow_location, next);
                         else if (cave[arrow_location].tunnel[link] > room_num)                          else if (cave[arrow_location].tunnel[lnk] > room_num)
                                 (void)printf(                                  (void)printf(
 "*thunk*  The arrow flys randomly into a magic tunnel, thence into\n\  "*thunk*  The arrow flys randomly into a magic tunnel, thence into\n\
 room %d!\n",  room %d!\n",
                                     cave[arrow_location].tunnel[link]);                                      cave[arrow_location].tunnel[lnk]);
                         else                          else
                                 (void)printf(                                  (void)printf(
 "*thunk*  The arrow can't find a way from %d to %d and flys randomly\n\  "*thunk*  The arrow can't find a way from %d to %d and flys randomly\n\
 into room %d!\n",  into room %d!\n",
                                     arrow_location, next,                                      arrow_location, next,
                                     cave[arrow_location].tunnel[link]);                                      cave[arrow_location].tunnel[lnk]);
                         arrow_location = cave[arrow_location].tunnel[link];                          arrow_location = cave[arrow_location].tunnel[lnk];
                         break;                          break;
                 }                  }
                 chance = random() % 10;                  chance = random() % 10;
Line 533  gcd(a, b)
Line 533  gcd(a, b)
 void  void
 cave_init()  cave_init()
 {  {
         int i, j, k, link;          int i, j, k, lnk;
         int delta;          int delta;
   
         /*          /*
Line 562  cave_init()
Line 562  cave_init()
         } while (gcd(room_num, delta + 1) != 1);          } while (gcd(room_num, delta + 1) != 1);
   
         for (i = 1; i <= room_num; ++i) {          for (i = 1; i <= room_num; ++i) {
                 link = ((i + delta) % room_num) + 1;    /* connection */                  lnk = ((i + delta) % room_num) + 1;     /* connection */
                 cave[i].tunnel[0] = link;               /* forw link */                  cave[i].tunnel[0] = lnk;                /* forw link */
                 cave[link].tunnel[1] = i;               /* back link */                  cave[lnk].tunnel[1] = i;                /* back link */
         }          }
         /* now fill in the rest of the cave with random connections */          /* now fill in the rest of the cave with random connections */
         for (i = 1; i <= room_num; i++)          for (i = 1; i <= room_num; i++)
                 for (j = 2; j < link_num ; j++) {                  for (j = 2; j < link_num ; j++) {
                         if (cave[i].tunnel[j] != -1)                          if (cave[i].tunnel[j] != -1)
                                 continue;                                  continue;
 try_again:              link = (random() % room_num) + 1;  try_again:              lnk = (random() % room_num) + 1;
                         /* skip duplicates */                          /* skip duplicates */
                         for (k = 0; k < j; k++)                          for (k = 0; k < j; k++)
                                 if (cave[i].tunnel[k] == link)                                  if (cave[i].tunnel[k] == lnk)
                                         goto try_again;                                          goto try_again;
                         cave[i].tunnel[j] = link;                          cave[i].tunnel[j] = lnk;
                         if (random() % 2 == 1)                          if (random() % 2 == 1)
                                 continue;                                  continue;
                         for (k = 0; k < link_num; ++k) {                          for (k = 0; k < link_num; ++k) {
                                 /* if duplicate, skip it */                                  /* if duplicate, skip it */
                                 if (cave[link].tunnel[k] == i)                                  if (cave[lnk].tunnel[k] == i)
                                         k = link_num;                                          k = link_num;
   
                                 /* if open link, use it, force exit */                                  /* if open link, use it, force exit */
                                 if (cave[link].tunnel[k] == -1) {                                  if (cave[lnk].tunnel[k] == -1) {
                                         cave[link].tunnel[k] = i;                                          cave[lnk].tunnel[k] = i;
                                         k = link_num;                                          k = link_num;
                                 }                                  }
                         }                          }

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

CVSweb <webmaster@jp.NetBSD.org>