Ejemplo n.º 1
0
/*
 *	This routine summates the trade.
 */
static void
summate(void)
{
	bool some;
	int i;
	TRADE *tp;
	OWN *op;

	for (i = 0; i < 2; i++) {
		tp = &trades[i];
		some = FALSE;
		printf("Player %s (%d) gives:\n", play[tp->trader].name,
			tp->trader+1);
		if (tp->cash > 0)
			printf("\t$%d\n", tp->cash), some++;
		if (tp->gojf > 0)
			printf("\t%d get-out-of-jail-free card(s)\n", tp->gojf),
			some++;
		if (tp->prop_list) {
			for (op = tp->prop_list; op; op = op->next)
				putchar('\t'), printsq(sqnum(op->sqr), TRUE);
			some++;
		}
		if (!some)
			printf("\t-- Nothing --\n");
	}
}
Ejemplo n.º 2
0
/*
 *	This routine does a switch from one player to another
 */
static void
move_em(TRADE *from, TRADE *to)
{
	PLAY *pl_fr, *pl_to;
	OWN *op;

	pl_fr = &play[from->trader];
	pl_to = &play[to->trader];

	pl_fr->money -= from->cash;
	pl_to->money += from->cash;
	pl_fr->num_gojf -= from->gojf;
	pl_to->num_gojf += from->gojf;
	for (op = from->prop_list; op; op = op->next) {
		add_list(to->trader, &(pl_to->own_list), sqnum(op->sqr));
		op->sqr->owner = to->trader;
		del_list(from->trader, &(pl_fr->own_list), sqnum(op->sqr));
	}
	set_ownlist(to->trader);
}
Ejemplo n.º 3
0
/*
 *	This routine gets the list of things to be trader for the
 * player, and puts in the structure given.
 */
static void
get_list(int struct_no, int play_no)
{
	int sn, pn;
	PLAY *pp;
	int numin, propnum, num_prp;
	OWN *op;
	TRADE *tp;

	for (numin = 0; numin < MAX_PRP; numin++)
		used[numin] = FALSE;
	sn = struct_no, pn = play_no;
	pp = &play[pn];
	tp = &trades[sn];
	tp->trader = pn;
	printf("player %s (%d):\n", pp->name, pn+1);
	if (pp->own_list) {
		numin = set_list(pp->own_list);
		for (num_prp = numin; num_prp; ) {
			propnum=getinp("Which property do you wish to trade? ",
			    plist);
			if (propnum == numin)
				break;
			else if (used[propnum])
				printf("You've already allocated that.\n");
			else {
				num_prp--;
				used[propnum] = TRUE;
				for (op = pp->own_list; propnum--; op = op->next)
					continue;
				add_list(pn, &(tp->prop_list), sqnum(op->sqr));
			}
		}
	}
	if (pp->money > 0) {
		printf("You have $%d.  ", pp->money);
		tp->cash = get_int("How much are you trading? ");
	}
	if (pp->num_gojf > 0) {
once_more:
		printf("You have %d get-out-of-jail-free cards. ",pp->num_gojf);
		tp->gojf = get_int("How many are you trading? ");
		if (tp->gojf > pp->num_gojf) {
			printf("You don't have that many.  Try again.\n");
			goto once_more;
		}
	}
}
Ejemplo n.º 4
0
/*
 *	This routine sets up the list of mortgageable property
 */
set_mlist() {

	reg OWN	*op;

	num_good = 0;
	for (op = cur_p->own_list; op; op = op->next)
		if (!op->sqr->desc->morg)
			if (op->sqr->type == PRPTY && op->sqr->desc->houses)
				got_houses++;
			else {
				names[num_good] = op->sqr->name;
				square[num_good++] = sqnum(op->sqr);
			}
	names[num_good++] = "done";
	names[num_good--] = 0;
	return num_good;
}
Ejemplo n.º 5
0
// This routine calculates the value for sorting of the given square.
static int value(SQUARE * sqp)
{
    int sqr = sqnum(sqp);
    switch (sqp->type) {
	case SAFE:
	    return 0;
	default:	       // Specials, etc
	    return 1;
	case UTIL:
	    if (sqr == 12)
		return 2;
	    else
		return 3;
	case RR:
	    return 4 + sqr / 10;
	case PRPTY:
	    return 8 + (sqp->desc) - prop;
    }
}