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]); }
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]); }