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 are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 static char sccsid[] = "@(#)jail.c 5.2 (Berkeley) 06/18/88"; 20 #endif /* not lint */ 21 22 # include "monop.ext" 23 24 /* 25 * This routine uses a get-out-of-jail-free card to get the 26 * player out of jail. 27 */ 28 card() { 29 30 if (cur_p->loc != JAIL) { 31 printf("But you're not IN Jail\n"); 32 return; 33 } 34 if (cur_p->num_gojf == 0) { 35 printf("But you don't HAVE a get out of jail free card\n"); 36 return; 37 } 38 ret_card(cur_p); 39 cur_p->loc = 10; /* just visiting */ 40 cur_p->in_jail = 0; 41 } 42 /* 43 * This routine returns the players get-out-of-jail-free card 44 * to a deck. 45 */ 46 ret_card(plr) 47 reg PLAY *plr; { 48 49 plr->num_gojf--; 50 if (CC_D.gojf_used) 51 CC_D.gojf_used = FALSE; 52 else 53 CH_D.gojf_used = FALSE; 54 } 55 /* 56 * This routine deals with paying your way out of jail. 57 */ 58 pay() { 59 60 if (cur_p->loc != JAIL) { 61 printf("But you're not IN Jail\n"); 62 return; 63 } 64 cur_p->loc = 10; 65 cur_p->money -= 50; 66 cur_p->in_jail = 0; 67 printf("That cost you $50\n"); 68 } 69 /* 70 * This routine deals with a move in jail 71 */ 72 move_jail(r1, r2) 73 reg int r1, r2; { 74 75 if (r1 != r2) { 76 printf("Sorry, that doesn't get you out\n"); 77 if (++(cur_p->in_jail) == 3) { 78 printf("It's your third turn and you didn't roll doubles. You have to pay $50\n"); 79 cur_p->money -= 50; 80 moveit: 81 cur_p->loc = 10; 82 cur_p->in_jail = 0; 83 move(r1+r2); 84 r1 = r2 - 1; /* kludge: stop new roll w/doub */ 85 return TRUE; 86 } 87 return FALSE; 88 } 89 else { 90 printf("Double roll gets you out.\n"); 91 goto moveit; 92 } 93 } 94 printturn() { 95 96 if (cur_p->loc != JAIL) 97 return; 98 printf("(This is your "); 99 switch (cur_p->in_jail) { 100 case 0: 101 printf("1st"); 102 break; 103 case 1: 104 printf("2nd"); 105 break; 106 case 2: 107 printf("3rd (and final)"); 108 break; 109 } 110 printf(" turn in JAIL)\n"); 111 } 112