我有一个函数,用于检查一个数组是否具有三个与井字游戏数组相同的字符。问题是,我的逻辑有问题:
for (int i = 0; i < SIZE; i++){
for (int j = 0; j < SIZE; j++){
if (board[i][j] != '*'){
if (i != j){
if (board[i][i] == board[i][j]){
matches++;
}
else if (board[i][j] == board[j][i]){
matches++;
}
else if (board[i][j] == board[j][j]){
matches++;
}
else if (board[i][j] == board[j][i]){
matches++;
}
else {
matches = 0;
}
}
}
}
}
看来我可以检查水平和垂直匹配。但是,我不太清楚如何找到对角线匹配。我认为这段代码可以工作,但到目前为止还没有。
有什么错误的建议吗?
最佳答案
看起来像作业,就不给出代码解决方案了。但是当两个索引相等时 (i == j
),或者当索引加起来比矩阵的维数小一时 ( i + j == SIZE - 1
.)
在第一种情况下,您位于第一条对角线(从左上角到右下角。)在第二种情况下,您位于第二条对角线(从右上角到左下角。)
这适用于任何大小的方阵。
关于c++ - 在 C++ 中循环访问 2D tic-tac-toe 数组的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042031/