* Copyright (c) 1980 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that: (1) source distributions retain this entire copyright
* notice and comment, and (2) distributions including binaries display
* the following acknowledgement: ``This product includes software
* developed by the University of California, Berkeley and its contributors''
* in the documentation or other materials provided with the distribution
* and in all advertising materials mentioning features or use of this
* software. Neither the name of the University nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
static char sccsid
[] = "@(#)houses.c 5.5 (Berkeley) 6/1/90";
static char *names
[N_MON
+2],
static MON
*monops
[N_MON
];
* These routines deal with buying and selling houses
for (op
= cur_p
->own_list
; op
&& op
->sqr
->type
!= PRPTY
; op
= op
->next
)
if (op
->sqr
->desc
->monop
) {
mp
= op
->sqr
->desc
->mon_desc
;
names
[num_mon
] = (monops
[num_mon
]=mp
)->name
;
for (i
= 0; i
< mp
->num_in
; i
++) {
if (op
->sqr
->desc
->houses
!= 5)
printf("You can't build on mortgaged monopolies.\n");
printf("You can't build any more.\n");
printf("But you don't have any monopolies!!\n");
names
[num_mon
++] = "done";
if ((p
=getinp("Which property do you wish to buy houses for? ", names
)) == num_mon
)
printf("Houses will cost $%d\n", price
);
printf("How many houses do you wish to buy for\n");
for (i
= 0; i
< mp
->num_in
; i
++) {
printf("%s (H):\n", mp
->sq
[i
]->name
);
(void)sprintf(cur_prop
, "%s (%d): ",
mp
->sq
[i
]->name
, pp
->houses
);
input
[i
] = get_int(cur_prop
);
temp
[i
] = input
[i
] + pp
->houses
;
printf("That's too many. The most you can buy is %d\n",
if (mp
->num_in
== 3 && (abs(temp
[0] - temp
[1]) > 1 ||
abs(temp
[0] - temp
[2]) > 1 || abs(temp
[1] - temp
[2]) > 1)) {
err
: printf("That makes the spread too wide. Try again\n");
else if (mp
->num_in
== 2 && abs(temp
[0] - temp
[1]) > 1)
for (tot
= i
= 0; i
< mp
->num_in
; i
++)
printf("You asked for %d houses for $%d\n", tot
, tot
* price
);
if (getyn("Is that ok? ", yn
) == 0) {
cur_p
->money
-= tot
* price
;
for (tot
= i
= 0; i
< mp
->num_in
; i
++)
mp
->sq
[i
]->desc
->houses
= temp
[i
];
* This routine sells houses.
for (op
= cur_p
->own_list
; op
; op
= op
->next
)
if (op
->sqr
->type
== PRPTY
&& op
->sqr
->desc
->monop
) {
mp
= op
->sqr
->desc
->mon_desc
;
names
[num_mon
] = (monops
[num_mon
]=mp
)->name
;
if (!good
&& op
->sqr
->desc
->houses
!= 0)
while (op
->next
&& op
->sqr
->desc
->mon_desc
== mp
printf("You don't have any houses to sell!!\n");
names
[num_mon
++] = "done";
if ((p
=getinp("Which property do you wish to sell houses from? ", names
)) == num_mon
)
printf("Houses will get you $%d apiece\n", price
);
printf("How many houses do you wish to sell from\n");
for (i
= 0; i
< mp
->num_in
; i
++) {
printf("%s (0):\n", mp
->sq
[i
]->name
);
(void)sprintf(cur_prop
,"%s (%d): ",
mp
->sq
[i
]->name
,pp
->houses
);
(void)sprintf(cur_prop
,"%s (H): ",mp
->sq
[i
]->name
);
input
[i
] = get_int(cur_prop
);
temp
[i
] = pp
->houses
- input
[i
];
printf("That's too many. The most you can sell is %d\n", pp
->houses
);
if (mp
->num_in
== 3 && (abs(temp
[0] - temp
[1]) > 1 ||
abs(temp
[0] - temp
[2]) > 1 || abs(temp
[1] - temp
[2]) > 1)) {
err
: printf("That makes the spread too wide. Try again\n");
else if (mp
->num_in
== 2 && abs(temp
[0] - temp
[1]) > 1)
for (tot
= i
= 0; i
< mp
->num_in
; i
++)
printf("You asked to sell %d houses for $%d\n",tot
,tot
* price
);
if (getyn("Is that ok? ", yn
) == 0) {
cur_p
->money
+= tot
* price
;
for (tot
= i
= 0; i
< mp
->num_in
; i
++)
mp
->sq
[i
]->desc
->houses
= temp
[i
];
for (i
= 0; i
< mp
->num_in
; i
++) {
if (sqp
->desc
->houses
== 5)
printf("%s (H) ", sqp
->name
);
printf("%s (%d) ", sqp
->name
, sqp
->desc
->houses
);