static void othello_draw_background(void) { UINT8 i, j; drawSquare(BK_X_OFFSET, BK_Y_OFFSET, 320, 320, WSTL_GAME_BG_02); for (i = 0; i <= BOARD_COLS; i++) { OSD_DrawVerLine(BK_X_OFFSET + i * GRID_WIDTH, \ BK_Y_OFFSET, BOARD_ROWS * GRID_WIDTH, \ WSTL_GAME_LINE_IDX, NULL); } for (i = 0; i <= BOARD_ROWS; i++) { OSD_DrawHorLine(BK_X_OFFSET, BK_Y_OFFSET + i * GRID_WIDTH, \ BOARD_COLS * GRID_WIDTH, WSTL_GAME_LINE_IDX, NULL); OSD_DrawHorLine(BK_X_OFFSET, \ BK_Y_OFFSET + i * GRID_WIDTH + 1, \ BOARD_COLS * GRID_WIDTH, WSTL_GAME_LINE_IDX, NULL); } for (i = 0; i < BOARD_ROWS; i++) { for (j = 0; j < BOARD_COLS; j++) { if (chess_board.board[i + 1][j + 1] == CHESS_BLACK) draw_chess(i, j, CHESS_BLACK); if (chess_board.board[i + 1][j + 1] == CHESS_WHITE) draw_chess(i, j, CHESS_WHITE); } } draw_cursor(cur_row, cur_col, WSTL_GAME_CURSOR_IDX); }
bool run_game(){ mouse_msg msg = {0}; gen_pos(pos); while(mousemsg()){ msg = getmouse(); if(msg.is_down() && get_current_status() == C_BLACK_S ){ C_POS c_pos; int board_x,board_y; get_right_pos(msg.x,msg.y,&board_x,&board_y); c_pos.x = pos[board_x][board_y].x; c_pos.y = pos[board_x][board_y].y; draw_chess(&c_pos,BLACK); update_board_status(board_x,board_y,C_BLACK); if(is_win(board_x,board_y,C_BLACK)) xyprintf(480,120,black_win); update_status(white_status); } else if(msg.is_down() && get_current_status() == C_WHITE_S){ C_POS c_pos; int board_x,board_y; get_right_pos(msg.x,msg.y,&board_x,&board_y); c_pos.x = pos[board_x][board_y].x; c_pos.y = pos[board_x][board_y].y; draw_chess(&c_pos,WHITE); update_board_status(board_x,board_y,C_WHITE); if(is_win(board_x,board_y,C_WHITE)) xyprintf(480,120,white_win); update_status(black_status); } } return true; }
static void callback(UINT8 type, INT32 wparam, UINT32 lparam) { UINT8 row, col, back_saved; UINT8 winner; win_popup_choice_t popResult; switch (type) { case TRANCHESS: row = wparam / 10-1; col = wparam % 10-1; draw_chess(row, col, (UINT8)lparam); break; case USER_NO_STEP: break; case COMPUTER_NO_STEP: break; case GAME_OVER: winner = (UINT8)wparam; update_status(Class, BlackPoint, WhitePoint); win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_frame(GAME_MSG_LEFT, GAME_MSG_TOP, GAME_MSG_WIDTH, GAME_MSG_HEIGHT); if (winner == COMPUTER_WIN) { //"Sorry! You lost!" win_compopup_set_msg_ext(NULL, NULL, RS_GAME_SORRY_YOU_LOST); } else if (winner == USER_WIN) { //"You Win!" win_compopup_set_msg_ext(NULL, NULL, RS_GAME_YOU_WIN); } else { //"DOGFALL!" win_compopup_set_msg_ext(NULL, NULL, RS_GAME_DOGFALL); } win_compopup_open_ext(&back_saved); othello_init(); OSD_ObjOpen((POBJECT_HEAD)&game_con, 0xFFFFFFFF) ; /* othello_draw_background(); update_status(Class, BlackPoint, WhitePoint,TRUE); OSD_SetAttr((POBJECT_HEAD) &txt_start, C_ATTR_ACTIVE); OSD_ChangeFocus((POBJECT_HEAD) &game_con, 1, \ C_UPDATE_FOCUS | C_DRAW_SIGN_EVN_FLG); */ break; } }