home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / Epoc / Palmtime / files / FrotzS5_src.ZIP / RANDOM.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-12  |  1.1 KB  |  68 lines

  1. /*
  2.  * random.c
  3.  *
  4.  * Z-machine random number generator
  5.  *
  6.  */
  7.  
  8. #include "frotz.h"
  9. #include "s5api.h"
  10.  
  11.  
  12. /*
  13.  * seed_random
  14.  *
  15.  * Set the seed value for the random number generator.
  16.  *
  17.  */
  18.  
  19. /*void seed_random (short value)
  20. {
  21.  
  22.     if (value == 0) {        
  23.     A = os_random_seed ();
  24.     interval = 0;
  25.     } else if (value < 1000) {    
  26.     counter = 0;
  27.     interval = value;
  28.     } else {        
  29.     A = value;
  30.     interval = 0;
  31.     }
  32.  
  33. }
  34. */
  35. /* seed_random */
  36.  
  37. /*
  38.  * z_random, store a random number or set the random number seed.
  39.  *
  40.  *    zargs[0] = range (positive) or seed value (negative)
  41.  *
  42.  */
  43.  
  44. void z_random (struct sg *g)
  45. {
  46.  
  47.     if ((short) (g->zargs[0]) <= 0) {    /* set random seed */
  48.  
  49.     //seed_random (- (short) zargs[0]);
  50.     store (g,0);
  51.  
  52.     } else {                /* generate random number */
  53.  
  54.     zword result;
  55.  
  56.     if (g->interval != 0) {        /* ...in special mode */
  57.         result = (g->counter)++;
  58.         if (g->counter == g->interval) g->counter = 0;
  59.     } else {            /* ...in standard mode */
  60.         result = SrvRandom(g);
  61.     }
  62.  
  63.     store (g,(zword) (result % (g->zargs[0]) + 1));
  64.  
  65.     }
  66.  
  67. }/* z_random */
  68.