コード例 #1
0
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);
}
コード例 #2
0
ファイル: game_logic.cpp プロジェクト: AlexiaChen/ConnectFive
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;
}
コード例 #3
0
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;
	}
}