diff options
Diffstat (limited to 'mbbsd/chc_draw.c')
-rw-r--r-- | mbbsd/chc_draw.c | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/mbbsd/chc_draw.c b/mbbsd/chc_draw.c deleted file mode 100644 index 2cca2f19..00000000 --- a/mbbsd/chc_draw.c +++ /dev/null @@ -1,183 +0,0 @@ -/* $Id$ */ -#include "bbs.h" - -#define SIDE_ROW 10 -#define TURN_ROW 11 -#define STEP_ROW 12 -#define TIME_ROW 13 -#define WARN_ROW 15 -#define MYWIN_ROW 17 -#define HISWIN_ROW 18 - -static char *turn_str[2] = {"黑的", "紅的"}; - -static char *num_str[10] = { - "", "一", "二", "三", "四", "五", "六", "七", "八", "九" -}; - -static char *chess_str[2][8] = { - /* 0 1 2 3 4 5 6 7 */ - {" ", "將", "士", "象", "車", "馬", "包", "卒"}, - {" ", "帥", "仕", "相", "車", "傌", "炮", "兵"} -}; - -static char *chess_brd[BRD_ROW * 2 - 1] = { - /* 0 1 2 3 4 5 6 7 8 */ - "┌─┬─┬─┬─┬─┬─┬─┬─┐", /* 0 */ - "│ │ │ │\│/│ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 1 */ - "│ │ │ │/│\│ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 2 */ - "│ │ │ │ │ │ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 3 */ - "│ │ │ │ │ │ │ │ │", - "├─┴─┴─┴─┴─┴─┴─┴─┤", /* 4 */ - "│ 楚 河 漢 界 │", - "├─┬─┬─┬─┬─┬─┬─┬─┤", /* 5 */ - "│ │ │ │ │ │ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 6 */ - "│ │ │ │ │ │ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 7 */ - "│ │ │ │\│/│ │ │ │", - "├─┼─┼─┼─┼─┼─┼─┼─┤", /* 8 */ - "│ │ │ │/│\│ │ │ │", - "└─┴─┴─┴─┴─┴─┴─┴─┘" /* 9 */ -}; - -static char *hint_str[] = { - " q 認輸離開", - " p 要求和棋", - "方向鍵 移動遊標", - "Enter 選擇/移動" -}; - -void -chc_movecur(int r, int c) -{ - move(r * 2 + 3, c * 4 + 4); -} - -#define BLACK_COLOR "\033[1;36m" -#define RED_COLOR "\033[1;31m" -#define BLACK_REVERSE "\033[1;37;46m" -#define RED_REVERSE "\033[1;37;41m" -#define TURN_COLOR "\033[1;33m" - -static void -showstep(board_t board) -{ - int turn, fc, tc, eatten; - char *dir; - - turn = CHE_O(board[chc_from.r][chc_from.c]); - fc = (turn == (chc_my ^ 1) ? chc_from.c + 1 : 9 - chc_from.c); - tc = (turn == (chc_my ^ 1) ? chc_to.c + 1 : 9 - chc_to.c); - if (chc_from.r == chc_to.r) - dir = "平"; - else { - if (chc_from.c == chc_to.c) - tc = chc_from.r - chc_to.r; - if (tc < 0) - tc = -tc; - - if ((turn == (chc_my ^ 1) && chc_to.r > chc_from.r) || - (turn == chc_my && chc_to.r < chc_from.r)) - dir = "進"; - else - dir = "退"; - } - prints("%s%s%s%s%s", - turn == 0 ? BLACK_COLOR : RED_COLOR, - chess_str[turn][CHE_P(board[chc_from.r][chc_from.c])], - num_str[fc], dir, num_str[tc]); - eatten = board[chc_to.r][chc_to.c]; - if (eatten) - prints(": %s%s", - CHE_O(eatten) == 0 ? BLACK_COLOR : RED_COLOR, - chess_str[CHE_O(eatten)][CHE_P(eatten)]); - prints("\033[m"); -} - -void -chc_drawline(board_t board, chcusr_t *user1, chcusr_t *user2, int line) -{ - int i, j; - - move(line, 0); - clrtoeol(); - if (line == 0) { - prints("\033[1;46m 象棋對戰 \033[45m%30s VS %-30s\033[m", - user1->userid, user2->userid); - } else if (line >= 3 && line <= 21) { - outs(" "); - for (i = 0; i < 9; i++) { - j = board[RTL(line)][i]; - if ((line & 1) == 1 && j) { - if (chc_selected && - chc_select.r == RTL(line) && chc_select.c == i) - prints("%s%s\033[m", - CHE_O(j) == 0 ? BLACK_REVERSE : RED_REVERSE, - chess_str[CHE_O(j)][CHE_P(j)]); - else - prints("%s%s\033[m", - CHE_O(j) == 0 ? BLACK_COLOR : RED_COLOR, - chess_str[CHE_O(j)][CHE_P(j)]); - } else - prints("%c%c", chess_brd[line - 3][i * 4], - chess_brd[line - 3][i * 4 + 1]); - if (i != 8) - prints("%c%c", chess_brd[line - 3][i * 4 + 2], - chess_brd[line - 3][i * 4 + 3]); - } - outs(" "); - - if (line >= 3 && line < 3 + (int)dim(hint_str)) { - outs(hint_str[line - 3]); - } else if (line == SIDE_ROW) { - prints("\033[1m你是%s%s\033[m", - chc_my == 0 ? BLACK_COLOR : RED_COLOR, - turn_str[chc_my]); - } else if (line == TURN_ROW) { - prints("%s%s\033[m", - TURN_COLOR, - chc_my == chc_turn ? "輪到你下棋了" : "等待對方下棋"); - } else if (line == STEP_ROW && !chc_firststep) { - showstep(board); - } else if (line == TIME_ROW) { - prints("剩餘時間 %d:%02d", chc_lefttime / 60, chc_lefttime % 60); - } else if (line == WARN_ROW) { - outs(chc_warnmsg); - } else if (line == MYWIN_ROW) { - prints("\033[1;33m%12.12s " - "\033[1;31m%2d\033[37m勝 " - "\033[34m%2d\033[37m敗 " - "\033[36m%2d\033[37m和\033[m", - user1->userid, - user1->win, user1->lose - 1, user1->tie); - } else if (line == HISWIN_ROW) { - prints("\033[1;33m%12.12s " - "\033[1;31m%2d\033[37m勝 " - "\033[34m%2d\033[37m敗 " - "\033[36m%2d\033[37m和\033[m", - user2->userid, - user2->win, user2->lose - 1, user2->tie); - } - } else if (line == 2 || line == 22) { - outs(" "); - if (line == 2) - for (i = 1; i <= 9; i++) - prints("%s ", num_str[i]); - else - for (i = 9; i >= 1; i--) - prints("%s ", num_str[i]); - } -} - -void -chc_redraw(chcusr_t *user1, chcusr_t *user2, board_t board) -{ - int i; - - for (i = 0; i <= 22; i++) - chc_drawline(board, user1, user2, i); -} |