home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / games / trek / play.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-08  |  3.6 KB  |  111 lines

  1. /*
  2.  * Copyright (c) 1980 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  */
  33.  
  34. #ifndef lint
  35. static char sccsid[] = "@(#)play.c    5.6 (Berkeley) 6/26/90";
  36. #endif /* not lint */
  37.  
  38. # include    "trek.h"
  39. # include    "getpar.h"
  40. # include    <setjmp.h>
  41.  
  42. /*
  43. **  INSTRUCTION READ AND MAIN PLAY LOOP
  44. **
  45. **    Well folks, this is it.  Here we have the guts of the game.
  46. **    This routine executes moves.  It sets up per-move variables,
  47. **    gets the command, and executes the command.  After the command,
  48. **    it calls events() to use up time, attack() to have Klingons
  49. **    attack if the move was not free, and checkcond() to check up
  50. **    on how we are doing after the move.
  51. */
  52. extern int    abandon(), capture(), shield(), computer(), dcrept(),
  53.         destruct(), dock(), help(), impulse(), lrscan(),
  54.         warp(), dumpgame(), rest(), srscan(),
  55.         myreset(), torped(), visual(), setwarp(), undock(), phaser();
  56.  
  57. struct cvntab    Comtab[] =
  58. {
  59.     "abandon",        "",            abandon,    0,
  60.     "ca",            "pture",        capture,    0,
  61.     "cl",            "oak",            shield,    -1,
  62.     "c",            "omputer",        computer,    0,
  63.     "da",            "mages",        dcrept,    0,
  64.     "destruct",        "",            destruct,    0,
  65.     "do",            "ck",            dock,        0,
  66.     "help",            "",            help,        0,
  67.     "i",            "mpulse",        impulse,    0,
  68.     "l",            "rscan",        lrscan,    0,
  69.     "m",            "ove",            warp,        0,
  70.     "p",            "hasers",        phaser,    0,
  71.     "ram",            "",            warp,        1,
  72.     "dump",            "",            dumpgame,    0,
  73.     "r",            "est",            rest,        0,
  74.     "sh",            "ield",            shield,    0,
  75.     "s",            "rscan",        srscan,    0,
  76.     "st",            "atus",            srscan,    -1,
  77.     "terminate",        "",            myreset,    0,
  78.     "t",            "orpedo",        torped,    0,
  79.     "u",            "ndock",        undock,    0,
  80.     "v",            "isual",        visual,    0,
  81.     "w",            "arp",            setwarp,    0,
  82.     0
  83. };
  84.  
  85. myreset()
  86. {
  87.     extern jmp_buf env;
  88.  
  89.     longjmp(env, 1);
  90. }
  91.  
  92. play()
  93. {
  94.     struct cvntab        *r;
  95.  
  96.     while (1)
  97.     {
  98.         Move.free = 1;
  99.         Move.time = 0.0;
  100.         Move.shldchg = 0;
  101.         Move.newquad = 0;
  102.         Move.resting = 0;
  103.         skiptonl(0);
  104.         r = getcodpar("\nCommand", Comtab);
  105.         (*r->value)(r->value2);
  106.         events(0);
  107.         attack(0);
  108.         checkcond();
  109.     }
  110. }
  111.