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

bsd-games/2.17/mille/end.c

    1: /*      $NetBSD: end.c,v 1.7 2003/08/07 09:37:25 agc Exp $   */
    2: 
    3: /*
    4:  * Copyright (c) 1982, 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[] = "@(#)end.c       8.1 (Berkeley) 5/31/93";
   36: #else
   37: __RCSID("$NetBSD: end.c,v 1.7 2003/08/07 09:37:25 agc Exp $");
   38: #endif
   39: #endif /* not lint */
   40: 
   41: # include       "mille.h"
   42: 
   43: /*
   44:  * @(#)end.c    1.1 (Berkeley) 4/1/82
   45:  */
   46: 
   47: /*
   48:  *      print out the score as if it was final, and add the totals for
   49:  * the end-of-games points to the user who deserves it (if any).
   50:  */
   51: void
   52: finalscore(pp)
   53:         PLAY   *pp;
   54: {
   55:         int    temp, tot, num;
   56: 
   57:         if (pp->was_finished == Finished)
   58:                 return;
   59: 
   60:         pp->was_finished = Finished;
   61:         num = pp - Player;
   62:         temp = num * 6 + 21 + 1;
   63:         for (tot = 5; tot <= 9; tot++)
   64:                 mvaddstr(tot, temp, "  0");
   65:         if (pp->mileage == End) {
   66:                 mvaddstr(5, temp, "40");
   67:                 tot = SC_TRIP;
   68:                 if (pp->nummiles[C_200] == 0) {
   69:                         mvaddstr(6, temp, "30");
   70:                         tot = SC_TRIP + SC_SAFE;
   71:                 }
   72:                 if (Topcard <= Deck) {
   73:                         mvaddstr(7, temp, "30");
   74:                         tot += SC_DELAY;
   75:                 }
   76:                 if (End == 1000) {
   77:                         mvaddstr(8, temp, "20");
   78:                         tot += SC_EXTENSION;
   79:                 }
   80:                 if (Player[other(num)].mileage == 0) {
   81:                         mvaddstr(9, temp, "50");
   82:                         tot += SC_SHUT_OUT;
   83:                 }
   84:                 pp->total += tot;
   85:                 pp->hand_tot += tot;
   86:         }
   87: }
   88: 
   89: # ifdef EXTRAP
   90: static int      Last_tot[2]; /* last tot used for extrapolate        */
   91: 
   92: /*
   93:  *      print out the score as if it was final, and add the totals for
   94:  * the end-of-games points to the user who deserves it (if any).
   95:  */
   96: extrapolate(pp)
   97: reg PLAY        *pp; {
   98: 
   99:         reg int                x, num, tot, count;
  100: 
  101:         num = pp - Player;
  102:         tot += SC_TRIP + SC_DELAY + SC_EXT;
  103:         x = num * 6 + 21 + 3;
  104:         for (tot = 5; tot <= 9; tot++)
  105:                 mvaddch(tot, x, '0');
  106:         x -= 2;
  107:         pp = &Player[other(num)];
  108:         for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
  109:                 if (pp->safety[tot] != S_PLAYED)
  110:                         count += SC_SAFE;
  111:         mvprintw(3, x, "%3d", count);
  112:         tot += count;
  113:         if (count == 400) {
  114:                 mvaddstr(4, x, "30");
  115:                 tot += SC_ALL_SAFE;
  116:         }
  117:         pp = &Player[num];
  118:         for (count = 0, tot = 0; tot < NUM_SAFE; tot++)
  119:                 if (pp->safety[tot] != S_PLAYED)
  120:                         count += SC_COUP / 10;
  121:         mvprintw(4, x - 1, "%3d", count);
  122:         tot += count;
  123:         tot += 1000 - pp->mileage;
  124:         mvaddstr(5, x, "40");
  125:         mvaddstr(7, x, "30");
  126:         mvaddstr(8, x, "20");
  127:         if (pp->nummiles[C_200] == 0) {
  128:                 mvaddstr(6, x, "30");
  129:                 tot = SC_TRIP + SC_SAFE;
  130:         }
  131:         if (Player[other(num)].mileage == 0) {
  132:                 mvaddstr(9, x, "50");
  133:                 tot += SC_SHUT_OUT;
  134:         }
  135:         pp->total += tot;
  136:         pp->hand_tot += tot;
  137:         Last_tot[num] = tot;
  138: }
  139: 
  140: undoex() {
  141: 
  142:         reg PLAY       *pp;
  143:         reg int                i;
  144: 
  145:         i = 0;
  146:         for (pp = Player; pp < &Player[2]; pp++) {
  147:                 pp->total -= Last_tot[i];
  148:                 pp->hand_tot -= Last_tot[i++];
  149:         }
  150: }
  151: # endif
Syntax (Markdown)