c语言+ege 井字棋

界面和九宫格绘制出来后,怎么鼠标点击判断下棋位置

参考GPT和自己的思路:

首先,需要在程序中维护一个二维数组来表示九宫格的状态,如下所示:

int board[3][3] = {0}; // 0表示空,1表示X,2表示O

接着,在绘制界面时,需要记录每个格子的位置和大小,以便后续判断点击坐标是否在格子内。假设格子大小为100x100,左上角坐标为(50,50),则第一行第一列的格子的位置为(50,50),第一行第二列的格子的位置为(150,50),以此类推。

最后,在处理鼠标事件时,需要判断鼠标点击坐标是否在任何一个格子内,如果是,则将该格子状态更新为当前玩家的状态(假设当前玩家为X),并切换到下一个玩家。代码如下:

// 鼠标事件处理函数
void onMouse(int x, int y, int button) {
    // 判断是否在某个格子内
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (x >= 50 + j * 100 && x < 150 + j * 100 &&
                y >= 50 + i * 100 && y < 150 + i * 100) {
                // 更新棋盘状态
                if (board[i][j] == 0) {
                    board[i][j] = 1;
                    // 切换到下一个玩家
                    currentPlayer = 2;
                }
                return;
            }
        }
    }
}

在上述代码中,currentPlayer表示当前玩家的状态,初始为1,代表X玩家。当点击某个格子后,先判断该格子是否已经被占用,如果已经被占用,则不进行任何操作;否则,将该格子状态设置为1(X)并切换到下一个玩家,即将currentPlayer设置为2(O)。