1 /* $NetBSD: jail.c,v 1.10 2012/06/19 05:35:32 dholland 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 * @(#)jail.c 8.1 (Berkeley) 5/31/93
32 */
33
34 #include "monop.h"
35
36 /*
37 * This routine uses a get-out-of-jail-free card to get the
38 * player out of jail.
39 */
40 void
card(void)41 card(void)
42 {
43 if (cur_p->loc != JAIL) {
44 printf("But you're not IN Jail\n");
45 return;
46 }
47 if (cur_p->num_gojf == 0) {
48 printf("But you don't HAVE a get out of jail free card\n");
49 return;
50 }
51 ret_card(cur_p);
52 cur_p->loc = 10; /* just visiting */
53 cur_p->in_jail = 0;
54 }
55
56 /*
57 * This routine deals with paying your way out of jail.
58 */
59 void
pay(void)60 pay(void)
61 {
62 if (cur_p->loc != JAIL) {
63 printf("But you're not IN Jail\n");
64 return;
65 }
66 cur_p->loc = 10;
67 cur_p->money -= 50;
68 cur_p->in_jail = 0;
69 printf("That cost you $50\n");
70 }
71
72 /*
73 * This routine deals with a move in jail
74 */
75 int
move_jail(int r1,int r2)76 move_jail(int r1, int r2)
77 {
78 if (r1 != r2) {
79 printf("Sorry, that doesn't get you out\n");
80 if (++(cur_p->in_jail) == 3) {
81 printf("It's your third turn and you didn't roll "
82 "doubles. You have to pay $50\n");
83 cur_p->money -= 50;
84 moveit:
85 cur_p->loc = 10;
86 cur_p->in_jail = 0;
87 move(r1+r2);
88 r1 = r2 - 1; /* kludge: stop new roll w/doub */
89 return TRUE;
90 }
91 return FALSE;
92 } else {
93 printf("Double roll gets you out.\n");
94 goto moveit;
95 }
96 }
97
98 void
printturn(void)99 printturn(void)
100 {
101 if (cur_p->loc != JAIL)
102 return;
103 printf("(This is your ");
104 switch (cur_p->in_jail) {
105 case 0:
106 printf("1st");
107 break;
108 case 1:
109 printf("2nd");
110 break;
111 case 2:
112 printf("3rd (and final)");
113 break;
114 }
115 printf(" turn in JAIL)\n");
116 }
117