//--------------------------------------------------------------------------------------------------------------------------------------------------------- /* 【函数编写】 当用户选中棋子后,就可以在棋盘内点击任何一个位置,意图将棋子移动到这个位置。但鼠标点击的坐标肯定不在棋盘横线和竖线的交叉点上,而棋子应该是移动到交叉点上。 此函数的功能是,根据参数传下来的鼠标坐标,寻找离鼠标最近的一个棋盘交叉点坐标,并将参数修改为这个交叉点坐标。(注:参数传下来的鼠标坐标肯定是位于棋盘内的) 以下是几个你可以使用的宏定义: BOARD_START_X: 棋盘左上角的x坐标 BOARD_START_Y: 棋盘左上角的y坐标 BOARD_GRID_WIDTH: 棋盘每两个交叉点之间的距离 */ //--------------------------------------------------------------------------------------------------------------------------------------------------------- void LocateChessDestination(int *pMouseX, int *pMouseY) { }
时间: 2023-08-15 07:11:39 浏览: 17
void LocateChessDestination(int *pMouseX, int *pMouseY) {
// 找到最近的交叉点,计算方法是将鼠标坐标减去棋盘左上角坐标,然后除以每两个交叉点之间的距离(向下取整),再乘回去,就可以得到最近的交叉点坐标
int gridX = (*pMouseX - BOARD_START_X + BOARD_GRID_WIDTH / 2) / BOARD_GRID_WIDTH;
int gridY = (*pMouseY - BOARD_START_Y + BOARD_GRID_WIDTH / 2) / BOARD_GRID_WIDTH;
// 将计算得到的最近交叉点坐标乘回去,得到实际坐标
*pMouseX = gridX * BOARD_GRID_WIDTH + BOARD_START_X;
*pMouseY = gridY * BOARD_GRID_WIDTH + BOARD_START_Y;
}