Пример #1
0
fboard ()  {
	register int	i, j, l;

	curmove (0,0);				/* do top line */
	for (i = 0; i < 53; i++)
		fancyc ('_');

	curmove (15,0);				/* do botttom line */
	for (i = 0; i < 53; i++)
		fancyc ('_');

	l = 1;					/* do vertical lines */
	for (i = 52; i > -1; i -= 28)  {
		curmove ( (l == 1? 1: 15) ,i);
		fancyc ('|');
		for (j = 0; j < 14; j++)  {
			curmove (curr+l,curc-1);
			fancyc ('|');
		}
		if (i == 24)
			i += 32;
		l = -l;				/* alternate directions */
	}

	curmove (2,1);				/* label positions 13-18 */
	for (i = 13; i < 18; i++)  {
		fancyc ('1');
		fancyc ((i % 10)+'0');
		curmove (curr,curc+2);
	}
	fancyc ('1');
	fancyc ('8');

	curmove (2,29);				/* label positions 19-24 */
	fancyc ('1');
	fancyc ('9');
	for (i = 20; i < 25; i++)  {
		curmove (curr,curc+2);
		fancyc ('2');
		fancyc ((i % 10)+'0');
	}

	curmove (14,1);				/* label positions 12-7 */
	fancyc ('1');
	fancyc ('2');
	for (i = 11; i > 6; i--)  {
		curmove (curr,curc+2);
		fancyc (i > 9? '1': ' ');
		fancyc ((i % 10)+'0');
	}

	curmove (14,30);			/* label positions 6-1 */
	fancyc ('6');
	for (i = 5; i > 0; i--) {
		curmove (curr,curc+3);
		fancyc (i+'0');
	}

	for (i = 12; i > 6; i--)		/* print positions 12-7 */
		if (board[i])
			bsect (board[i],13,1+4*(12-i),-1);

	if (board[0])				/* print red men on bar */
		bsect (board[0],13,25,-1);

	for (i = 6; i > 0; i--)			/* print positions 6-1 */
		if (board[i])
			bsect (board[i],13,29+4*(6-i),-1);

	l = (off[1] < 0? off[1]+15: off[1]);	/* print white's home */
	bsect (l,3,54,1);

	curmove (8,25);				/* print the word BAR */
	fancyc ('B');
	fancyc ('A');
	fancyc ('R');

	for (i = 13; i < 19; i++)		/* print positions 13-18 */
		if (board[i])
			bsect (board[i],3,1+4*(i-13),1);

	if (board[25])				/* print white's men on bar */
		bsect (board[25],3,25,1);

	for (i = 19; i < 25; i++)		/* print positions 19-24 */
		if (board[i])
			bsect (board[i],3,29+4*(i-19),1);

	l = (off[0] < 0? off[0]+15: off[0]);	/* print red's home */
	bsect (-l,13,54,-1);

	for (i = 0; i < 26; i++)		/* save board position
						 * for refresh later */
		oldb[i] = board[i];
	oldr = (off[1] < 0? off[1]+15: off[1]);
	oldw = -(off[0] < 0? off[0]+15: off[0]);
}
Пример #2
0
void
fboard()
{
	int     i, j, k, l;

	/* could use box() or wborder() instead of the following */
	move(0, 0);		/* do top line */
	for (i = 0; i < 53; i++)
		addch('_');

	move(15, 0);		/* do bottom line */
	for (i = 0; i < 53; i++)
		addch('_');

	l = 1;			/* do vertical lines */
	for (i = 52; i > -1; i -= 28) {
		k = (l == 1 ? 1 : 15);
		mvaddch(k, i, '|');
		for (j = 0; j < 14; j++)
			mvaddch(k += l, i, '|');
		if (i == 24)
			i += 32;
		l = -l;		/* alternate directions */
	}

	/* label positions */
	for (i = 13; i < 19; i++)
		mvprintw(2, 1 + (i - 13) * 4, "%d", i);
	for (i = 19; i < 25; i++)
		mvprintw(2, 29 + (i - 19) * 4, "%d", i);
	for (i = 12; i > 6; i--)
		mvprintw(14, 1 + (12 - i) * 4, "%2d", i);
	for (i = 6; i > 0; i--)
		mvprintw(14, 30 + (6 - i) * 4, "%d", i);

	/* print positions 12-7 */
	for (i = 12; i > 6; i--)
		if (board[i])
			bsect(board[i], 13, 1 + 4 * (12 - i), -1);
	/* print red men on bar */
	if (board[0])
		bsect(board[0], 13, 25, -1);
	/* print positions 6-1 */
	for (i = 6; i > 0; i--)
		if (board[i])
			bsect(board[i], 13, 29 + 4 * (6 - i), -1);
	/* print white's home */
	l = (off[1] < 0 ? off[1] + 15 : off[1]);
	bsect(l, 3, 54, 1);

	mvaddstr(8, 25, "BAR");

	/* print positions 13-18 */
	for (i = 13; i < 19; i++)
		if (board[i])
			bsect(board[i], 3, 1 + 4 * (i - 13), 1);
	/* print white's men on bar */
	if (board[25])
		bsect(board[25], 3, 25, 1);
	/* print positions 19-24 */
	for (i = 19; i < 25; i++)
		if (board[i])
			bsect(board[i], 3, 29 + 4 * (i - 19), 1);
	/* print red's home */
	l = (off[0] < 0 ? off[0] + 15 : off[0]);
	bsect(-l, 13, 54, -1);

	for (i = 0; i < 26; i++)/* save board position for refresh later */
		oldb[i] = board[i];
	oldr = (off[1] < 0 ? off[1] + 15 : off[1]);
	oldw = -(off[0] < 0 ? off[0] + 15 : off[0]);
}