(linenum→info "unix/slp.c:2238")

bsd-games/2.17/trek/play.c

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