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