예제 #1
0
파일: chess.c 프로젝트: yrchen/Athena
static void mainloop(int s, board_t board) {
    int endgame;
    board_t tmpbrd;
    play_func_t play_func[2];

    play_func[chc_my] = myplay;
    play_func[chc_my ^ 1] = hisplay;
    for(chc_turn = 1, endgame = 0; !endgame; chc_turn ^= 1) {
        chc_firststep = 0;
        chc_drawline(board, TURN_ROW);
        if(chc_ischeck(board, chc_turn)) {
            strcpy(chc_warnmsg, "\033[1;31m將軍!\033[m");

            bell();
        } else
            chc_warnmsg[0] = 0;
        chc_drawline(board, WARN_ROW);
        endgame = play_func[chc_turn](s, board, tmpbrd);
    }

    if(endgame == 1) {
        strcpy(chc_warnmsg, "對方認輸了!");
        my.chc_win++;
        chc_hislose++;
    } else if(endgame == 2) {
        strcpy(chc_warnmsg, "你認輸了!");
        my.chc_lose++;
        chc_hiswin++;
    } else {
        strcpy(chc_warnmsg, "和棋");
        my.chc_tie++;
        chc_histie++;
    }

    chc_save(cuser.userid,1);
    chc_save(uin->userid,2);
    chc_drawline(board, WARN_ROW);
    bell();
    oflush();
}
예제 #2
0
static void mainloop(int s, board_t board) {
    int endgame;
    board_t tmpbrd;
    play_func_t play_func[2];
    
    play_func[chc_my] = myplay;
    play_func[chc_my ^ 1] = hisplay;
    for(chc_turn = 1, endgame = 0; !endgame; chc_turn ^= 1) {
	chc_firststep = 0;
	chc_drawline(board, TURN_ROW);
	if(chc_ischeck(board, chc_turn)) {
	    strcpy(chc_warnmsg, "\033[1;31m將軍!\033[m");
	    bell();
	} else
	    chc_warnmsg[0] = 0;
	chc_drawline(board, WARN_ROW);
	endgame = play_func[chc_turn](s, board, tmpbrd);
    }
    
    if(endgame == 1) {
	strcpy(chc_warnmsg, "對方認輸了!");
	cuser.chc_win++;
    } else if(endgame == 2) {
	strcpy(chc_warnmsg, "你認輸了!");
	cuser.chc_lose++;
    } else {
	strcpy(chc_warnmsg, "和棋");
	cuser.chc_tie++;
    }
    cuser.chc_lose--;
    reload_money();
    passwd_update(usernum, &cuser);
    chc_drawline(board, WARN_ROW);
    bell();
    oflush();
}