Annotation of researchv10no/games/trek/trek.h, revision 1.1

1.1     ! root        1: #
        !             2: 
        !             3: #define ever (;;)
        !             4: 
        !             5: /* external function definitions */
        !             6: extern double  franf();        /* floating random number function */
        !             7: extern double  sqrt();         /* square root */
        !             8: extern double  sin(), cos();   /* trig functions */
        !             9: extern double  atan2();        /* fancy arc tangent function */
        !            10: extern double  log();          /* log base e */
        !            11: extern double  pow();          /* power function */
        !            12: extern double  fabs();         /* absolute value function */
        !            13: extern double  exp();          /* exponential function */
        !            14: 
        !            15: /*********************  GALAXY  **************************/
        !            16: 
        !            17: /* galactic parameters */
        !            18: # define       NSECTS          10      /* dimensions of quadrant in sectors */
        !            19: # define       NQUADS          8       /* dimension of galazy in quadrants */
        !            20: # define       NINHAB          32      /* number of quadrants which are inhabited */
        !            21: 
        !            22: #define        QUAD    struct quad
        !            23: QUAD                   /* definition for each quadrant */
        !            24: {
        !            25:        char    bases;          /* number of bases in this quadrant */
        !            26:        char    qkling:4;       /* number of Klingons in this quadrant */
        !            27:        char    holes:4;        /* number of black holes in this quadrant */
        !            28:        char    stars;          /* number of stars in this quadrant */
        !            29:        char    systemname;     /* starsystem name (see below) */
        !            30:        int     scanned;        /* star chart entry (see below) */
        !            31: };
        !            32: /*  systemname conventions:
        !            33:  *     1 -> NINHAB     index into Systemname table for live system.
        !            34:  *     + Q_GHOST       ghost starsystem.
        !            35:  *     + Q_DISTRESS    distressed starsystem.
        !            36:  *                     the index into the Distress table, which will
        !            37:  *                     have the starsystem name.
        !            38:  *     0               dead or nonexistent starsystem
        !            39:  *
        !            40:  *  starchart ("scanned") conventions:
        !            41:  *     0 -> 999        taken as is
        !            42:  *     -1              not yet scanned ("...")
        !            43:  *     1000            supernova ("///")
        !            44:  *     1001            starbase + ??? (".1.")
        !            45:  */
        !            46: 
        !            47: /* ascii names of systems */
        !            48: extern char    *Systemname[NINHAB];
        !            49: 
        !            50: /* quadrant definition */
        !            51: QUAD           Quad[NQUADS][NQUADS];
        !            52: 
        !            53: /* defines for sector map  (below) */
        !            54: # define       EMPTY           '.'
        !            55: # define       STAR            '*'
        !            56: # define       BASE            '#'
        !            57: # define       ENTERPRISE      'E'
        !            58: # define       QUEENE          'Q'
        !            59: # define       KLINGON         'K'
        !            60: # define       INHABIT         '@'
        !            61: # define       BLACKHOLE       ' '
        !            62: 
        !            63: /* current sector map */
        !            64: char   Sect[NSECTS][NSECTS];
        !            65: 
        !            66: /* current position of Enterprise */
        !            67: char   Quadx, Quady;           /* current quadrant */
        !            68: char   Sectx, Secty;           /* current sector */
        !            69: 
        !            70: /************************ DEVICES ******************************/
        !            71: 
        !            72: # define       NDEV            16      /* max number of devices */
        !            73: char   Damage[NDEV];                   /* set if device damaged */
        !            74: 
        !            75: /* device tokens */
        !            76: # define       WARP            0       /* warp engines */
        !            77: # define       SRSCAN          1       /* short range scanners */
        !            78: # define       LRSCAN          2       /* long range scanners */
        !            79: # define       PHASER          3       /* phaser control */
        !            80: # define       TORPED          4       /* photon torpedo control */
        !            81: # define       IMPULSE         5       /* impulse engines */
        !            82: # define       SHIELD          6       /* shield control */
        !            83: # define       COMPUTER        7       /* on board computer */
        !            84: # define       SSRADIO         8       /* subspace radio */
        !            85: # define       LIFESUP         9       /* life support systems */
        !            86: # define       SINS            10      /* Space Inertial Navigation System */
        !            87: # define       CLOAK           11      /* cloaking device */
        !            88: # define       XPORTER         12      /* transporter */
        !            89: # define       SHUTTLE         13      /* shuttlecraft */
        !            90: 
        !            91: /* device names */
        !            92: #define        DEVICE  struct device
        !            93: DEVICE
        !            94: {
        !            95:        char    *name;          /* device name */
        !            96:        char    *person;        /* the person who fixes it */
        !            97: };
        !            98: 
        !            99: DEVICE         Device[NDEV];
        !           100: 
        !           101: /***************************  EVENTS  ****************************/
        !           102: 
        !           103: # define       NEVENTS         12      /* number of different event types */
        !           104: 
        !           105: # define       E_SNOVA         0       /* supernova occurs */
        !           106: # define       E_LRTB          1       /* long range tractor beam */
        !           107: # define       E_KATSB         2       /* Klingon attacks starbase */
        !           108: # define       E_KDESB         3       /* Klingon destroys starbase */
        !           109: # define       E_ISSUE         4       /* distress call is issued */
        !           110: # define       E_ENSLV         5       /* Klingons enslave a quadrant */
        !           111: # define       E_REPRO         6       /* a Klingon is reproduced */
        !           112: # define       E_FIXDV         7       /* fix a device */
        !           113: # define       E_ATTACK        8       /* Klingon attack during rest period */
        !           114: # define       E_SNAP          9       /* take a snapshot for time warp */
        !           115: # define       E_NREPORT       32      /* distress call not yet reported */
        !           116: # define       Q_DISTRESS      64
        !           117: # define       Q_GHOST         32
        !           118: # define       Q_STARNAME      31
        !           119: 
        !           120: #define        EVENT   struct event
        !           121: EVENT
        !           122: {
        !           123:        char    x, y;                   /* coordinates */
        !           124:        char    evcode;                 /* event type */
        !           125:        char    evdata;                 /* starsystem name */
        !           126:        float   date;                   /* trap stardate */
        !           127: };
        !           128: /* systemname conventions:
        !           129:  *     1 -> NINHAB     index into Systemname table for reported distress calls
        !           130:  *     + E_NREPORT     flag marking distress call not reported (SS radio out)
        !           131:  */
        !           132: 
        !           133: # define       MAXEVENTS       25      /* max number of concurrently pending events */
        !           134: 
        !           135: EVENT          Event[MAXEVENTS];       /* dynamic event list; one entry per pending event */
        !           136: 
        !           137: /*****************************  KLINGONS  *******************************/
        !           138: 
        !           139: #define        KLINGONS        struct klingon
        !           140: KLINGONS
        !           141: {
        !           142:        char    x, y;           /* coordinates */
        !           143:        int     power;          /* power left */
        !           144:        float   dist;           /* distance to Enterprise */
        !           145:        float   avgdist;        /* average over this move */
        !           146: };
        !           147: # define       MAXKLQUAD       9       /* maximum klingons per quadrant */
        !           148: KLINGONS       Kling[MAXKLQUAD];
        !           149: int            Nkling;         /* number of Klingons in this sector */
        !           150: 
        !           151: /********************** MISCELLANEOUS ***************************/
        !           152: 
        !           153: /* condition codes */
        !           154: # define       GREEN           0
        !           155: # define       DOCKED          1
        !           156: # define       YELLOW          2
        !           157: # define       RED             3
        !           158: 
        !           159: /*
        !           160:  *     note that much of the stuff in the following structs CAN NOT
        !           161:  *     be moved around!!!!
        !           162:  */
        !           163: 
        !           164: /* initial information */
        !           165: struct
        !           166: {
        !           167:        char    bases;          /* number of starbases */
        !           168:        char    kling;          /* number of klingons */
        !           169:        char    torped;         /* photon torpedos */
        !           170:        float   date;           /* stardate */
        !           171:        float   time;           /* time left */
        !           172:        float   resource;       /* Federation resources */
        !           173:        int     energy;         /* starship's energy */
        !           174:        int     shield;         /* energy in shields */
        !           175:        float   reserves;       /* life support reserves */
        !           176:        int     crew;           /* size of ship's complement */
        !           177:        int     brigfree;       /* max possible number of captives */
        !           178: }      Initial;
        !           179: 
        !           180: /* status information */
        !           181: struct
        !           182: {
        !           183:        char    bases;          /* number of starbases */
        !           184:        char    kling;          /* number of klingons */
        !           185:        char    torped;         /* torpedoes */
        !           186:        float   date;           /* stardate */
        !           187:        float   time;           /* time left */
        !           188:        float   resource;       /* Federation resources */
        !           189:        int     energy;         /* starship's energy */
        !           190:        int     shield;         /* energy in shields */
        !           191:        float   reserves;       /* life support reserves */
        !           192:        int     crew;           /* ship's complement */
        !           193:        int     brigfree;       /* space left in brig */
        !           194:        char    shldup;         /* shield up flag */
        !           195:        char    cond;           /* condition code */
        !           196:        char    sinsbad;        /* Space Inertial Navigation System condition */
        !           197:        char    cloaked;        /* set if cloaking device on */
        !           198:        float   warp;           /* warp factor */
        !           199:        float   warp2;          /* warp factor squared */
        !           200:        float   warp3;          /* warp factor cubed */
        !           201:        float   cloakdate;      /* stardate we became cloaked */
        !           202:        char    *shipname;      /* name of current starship */
        !           203:        char    ship;           /* current starship */
        !           204:        char    distressed;     /* number of currently distressed quadrants */
        !           205: }      Status;
        !           206: 
        !           207: /* sinsbad is set if SINS is working but not calibrated */
        !           208: 
        !           209: /* game related information, mostly scoring */
        !           210: #define PWDLEN 15
        !           211: long   inittime;
        !           212: struct
        !           213: {
        !           214:        int     gkillk;         /* number of klingons killed */
        !           215:        int     helps;          /* number of help calls */
        !           216:        int     deaths;         /* number of deaths onboard Enterprise */
        !           217:        char    negenbar;       /* number of hits on negative energy barrier */
        !           218:        char    killb;          /* number of starbases killed */
        !           219:        int     kills;          /* number of stars killed */
        !           220:        char    skill;          /* skill rating of player */
        !           221:        char    length;         /* length of game */
        !           222:        char    killed;         /* set if you were killed */
        !           223:        char    killinhab;      /* number of inhabited starsystems killed */
        !           224:        char    tourn;          /* set if a tournament game */
        !           225:        char    passwd[PWDLEN]; /* game password */
        !           226:        char    snap;           /* set if snapshot taken */
        !           227:        int     captives;       /* total number of captives taken */
        !           228: }      Game;
        !           229: 
        !           230: /* per move information */
        !           231: struct
        !           232: {
        !           233:        char    free;           /* set if a move is free */
        !           234:        char    endgame;        /* end of game flag */
        !           235:        char    shldchg;        /* set if shields changed this move */
        !           236:        char    newquad;        /* set if just entered this quadrant */
        !           237:        char    resting;        /* set if this move is a rest */
        !           238:        float   delta;          /* time used this move */
        !           239: }      Move;
        !           240: 
        !           241: /* parametric information */
        !           242: struct
        !           243: {
        !           244:        float   damfac[NDEV];   /* damage factor */
        !           245:        float   dockfac;        /* docked repair time factor */
        !           246:        float   regenfac;       /* regeneration factor */
        !           247:        int     stopengy;       /* energy to do emergency stop */
        !           248:        int     shupengy;       /* energy to put up shields */
        !           249:        int     klingpwr;       /* Klingon initial power */
        !           250:        int     warptime;       /* time chewer multiplier */
        !           251:        float   phasfac;        /* Klingon phaser power eater factor */
        !           252:        char    moveprob[6];    /* probability that a Klingon moves */
        !           253:        float   movefac[6];     /* Klingon move distance multiplier */
        !           254:        float   eventdly[NEVENTS];      /* event time multipliers */
        !           255:        float   navigcrud[2];   /* navigation crudup factor */
        !           256:        int     cloakenergy;    /* cloaking device energy per stardate */
        !           257:        float   damprob[NDEV];  /* damage probability */
        !           258:        float   hitfac;         /* Klingon attack factor */
        !           259: }      Param;
        !           260: 
        !           261: /* Sum of damage probabilities must add to 1000 */
        !           262: 
        !           263: /* Other crap, mostly redundant stuff kept for efficiency reasons */
        !           264: struct
        !           265: {
        !           266:        EVENT           *eventptr[NEVENTS];     /* pointer to event structs */
        !           267: }      Etc;
        !           268: 
        !           269: /*
        !           270:  *     eventptr is a pointer to the event[] entry of the last
        !           271:  *     scheduled event of each type.  Zero if no such event scheduled.
        !           272:  */
        !           273: 
        !           274: /* Klingon move indicies */
        !           275: # define       KM_OB           0       /* Old quadrant, Before attack */
        !           276: # define       KM_OA           1       /* Old quadrant, After attack */
        !           277: # define       KM_EB           2       /* Enter quadrant, Before attack */
        !           278: # define       KM_EA           3       /* Enter quadrant, After attack */
        !           279: # define       KM_LB           4       /* Leave quadrant, Before attack */
        !           280: # define       KM_LA           5       /* Leave quadrant, After attack */
        !           281: 
        !           282: /* you lose codes */
        !           283: # define       L_NOTIME        1       /* ran out of time */
        !           284: # define       L_NOENGY        2       /* ran out of energy */
        !           285: # define       L_DSTRYD        3       /* destroyed by a Klingon */
        !           286: # define       L_NEGENB        4       /* ran into the negative energy barrier */
        !           287: # define       L_SUICID        5       /* destroyed in a nova */
        !           288: # define       L_SNOVA         6       /* destroyed in a supernova */
        !           289: # define       L_NOLIFE        7       /* life support died (so did you) */
        !           290: # define       L_NOHELP        8       /* you could not be rematerialized */
        !           291: # define       L_TOOFAST       9       /* pretty stupid going at warp 10 */
        !           292: # define       L_STAR          10      /* ran into a star */
        !           293: # define       L_DSTRCT        11      /* self destructed */
        !           294: # define       L_CAPTURED      12      /* captured by Klingons */
        !           295: # define       L_NOCREW        13      /* you ran out of crew */
        !           296: #define                L_CHEAT         14      /* probably cheating */
        !           297: 
        !           298: # define       CVNTAB  struct cvntab
        !           299: CVNTAB         /* used for getcodpar() paramater list */
        !           300: {
        !           301:        char    *abrev;
        !           302:        char    *full;
        !           303: };
        !           304: 
        !           305: #define        XY      struct xy
        !           306: XY
        !           307: {
        !           308:        char    x, y;           /* coordinates */
        !           309: };
        !           310: 
        !           311: /* starbase coordinates */
        !           312: # define       MAXBASES        9       /* maximum number of starbases in galaxy */
        !           313: 
        !           314: #define        SIGINT  2
        !           315: int    mkfault;                        /* marks outstanding signal */
        !           316: 
        !           317: XY             Base[MAXBASES];         /* quad coords of starbases */
        !           318: XY             Starbase;               /* starbase in current quadrant */
        !           319: 
        !           320: /*  distress calls  */
        !           321: # define       MAXDISTR        4       /* maximum concurrent distress calls */
        !           322: 
        !           323: #include <setjmp.h>
        !           324: jmp_buf        errjmp;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.