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

bsd-games/2.17/monop/jail.c

    1: /*      $NetBSD: jail.c,v 1.6 2003/08/07 09:37:28 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[] = "@(#)jail.c      8.1 (Berkeley) 5/31/93";
   36: #else
   37: __RCSID("$NetBSD: jail.c,v 1.6 2003/08/07 09:37:28 agc Exp $");
   38: #endif
   39: #endif /* not lint */
   40: 
   41: #include "monop.ext"
   42: 
   43: /*
   44:  *      This routine uses a get-out-of-jail-free card to get the
   45:  * player out of jail.
   46:  */
   47: void
   48: card()
   49: {
   50:         if (cur_p->loc != JAIL) {
   51:                 printf("But you're not IN Jail\n");
   52:                 return;
   53:         }
   54:         if (cur_p->num_gojf == 0) {
   55:                 printf("But you don't HAVE a get out of jail free card\n");
   56:                 return;
   57:         }
   58:         ret_card(cur_p);
   59:         cur_p->loc = 10;                       /* just visiting    */
   60:         cur_p->in_jail = 0;
   61: }
   62: 
   63: /*
   64:  *      This routine returns the players get-out-of-jail-free card
   65:  * to a deck.
   66:  */
   67: void
   68: ret_card(plr)
   69:         PLAY *plr;
   70: {
   71:         plr->num_gojf--;
   72:         if (CC_D.gojf_used)
   73:                 CC_D.gojf_used = FALSE;
   74:         else
   75:                 CH_D.gojf_used = FALSE;
   76: }
   77: 
   78: /*
   79:  *      This routine deals with paying your way out of jail.
   80:  */
   81: void
   82: pay()
   83: {
   84:         if (cur_p->loc != JAIL) {
   85:                 printf("But you're not IN Jail\n");
   86:                 return;
   87:         }
   88:         cur_p->loc = 10;
   89:         cur_p->money -= 50;
   90:         cur_p->in_jail = 0;
   91:         printf("That cost you $50\n");
   92: }
   93: 
   94: /*
   95:  *      This routine deals with a move in jail
   96:  */
   97: int
   98: move_jail(r1, r2)
   99:         int r1, r2;
  100: {
  101:         if (r1 != r2) {
  102:                 printf("Sorry, that doesn't get you out\n");
  103:                 if (++(cur_p->in_jail) == 3) {
  104:                         printf("It's your third turn and you didn't roll "
  105:                             "doubles.  You have to pay $50\n");
  106:                         cur_p->money -= 50;
  107: moveit:
  108:                         cur_p->loc = 10;
  109:                         cur_p->in_jail = 0;
  110:                         move(r1+r2);
  111:                         r1 = r2 - 1; /* kludge: stop new roll w/doub */
  112:                         return TRUE;
  113:                 }
  114:                 return FALSE;
  115:         }
  116:         else {
  117:                 printf("Double roll gets you out.\n");
  118:                 goto moveit;
  119:         }
  120: }
  121: 
  122: void
  123: printturn()
  124: {
  125:         if (cur_p->loc != JAIL)
  126:                 return;
  127:         printf("(This is your ");
  128:         switch (cur_p->in_jail) {
  129:           case 0:
  130:                 printf("1st");
  131:                 break;
  132:           case 1:
  133:                 printf("2nd");
  134:                 break;
  135:           case 2:
  136:                 printf("3rd (and final)");
  137:                 break;
  138:         }
  139:         printf(" turn in JAIL)\n");
  140: }
Syntax (Markdown)