1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)jail.c 5.3 (Berkeley) 06/01/90"; 10 #endif /* not lint */ 11 12 # include "monop.ext" 13 14 /* 15 * This routine uses a get-out-of-jail-free card to get the 16 * player out of jail. 17 */ 18 card() { 19 20 if (cur_p->loc != JAIL) { 21 printf("But you're not IN Jail\n"); 22 return; 23 } 24 if (cur_p->num_gojf == 0) { 25 printf("But you don't HAVE a get out of jail free card\n"); 26 return; 27 } 28 ret_card(cur_p); 29 cur_p->loc = 10; /* just visiting */ 30 cur_p->in_jail = 0; 31 } 32 /* 33 * This routine returns the players get-out-of-jail-free card 34 * to a deck. 35 */ 36 ret_card(plr) 37 reg PLAY *plr; { 38 39 plr->num_gojf--; 40 if (CC_D.gojf_used) 41 CC_D.gojf_used = FALSE; 42 else 43 CH_D.gojf_used = FALSE; 44 } 45 /* 46 * This routine deals with paying your way out of jail. 47 */ 48 pay() { 49 50 if (cur_p->loc != JAIL) { 51 printf("But you're not IN Jail\n"); 52 return; 53 } 54 cur_p->loc = 10; 55 cur_p->money -= 50; 56 cur_p->in_jail = 0; 57 printf("That cost you $50\n"); 58 } 59 /* 60 * This routine deals with a move in jail 61 */ 62 move_jail(r1, r2) 63 reg int r1, r2; { 64 65 if (r1 != r2) { 66 printf("Sorry, that doesn't get you out\n"); 67 if (++(cur_p->in_jail) == 3) { 68 printf("It's your third turn and you didn't roll doubles. You have to pay $50\n"); 69 cur_p->money -= 50; 70 moveit: 71 cur_p->loc = 10; 72 cur_p->in_jail = 0; 73 move(r1+r2); 74 r1 = r2 - 1; /* kludge: stop new roll w/doub */ 75 return TRUE; 76 } 77 return FALSE; 78 } 79 else { 80 printf("Double roll gets you out.\n"); 81 goto moveit; 82 } 83 } 84 printturn() { 85 86 if (cur_p->loc != JAIL) 87 return; 88 printf("(This is your "); 89 switch (cur_p->in_jail) { 90 case 0: 91 printf("1st"); 92 break; 93 case 1: 94 printf("2nd"); 95 break; 96 case 2: 97 printf("3rd (and final)"); 98 break; 99 } 100 printf(" turn in JAIL)\n"); 101 } 102