【发布时间】:2023-01-24 01:24:42
【问题描述】:
已经实现水平和垂直方法,我无法弄清楚对角线 这是我的工作方法:
private boolean checkHorizontalWin(String gameBoard, int gameSize, int gameDifficulty) {
// CHECK HORIZONTAL WIN
for (int row = 0; row < gameSize; row++) {
char candidate = getPawnAtCoords(gameBoard, gameSize, row, 0);
int counter = 1;
for (int column = 0; column < gameSize; column++) {
char pawn = getPawnAtCoords(gameBoard, gameSize, row, column);
if ((pawn == candidate) && (pawn != '-')) {
counter++;
} else {
counter = 1;
candidate = pawn;
}
if (counter == gameDifficulty) {
return true;
}
}
}
return false;
}
private boolean checkHVerticalWin(String gameBoard, int gameSize, int gameDifficulty) {
// CHECK VERTICAL WIN
for (int column = 0; column < gameSize; column++) {
char candidate = getPawnAtCoords(gameBoard, gameSize, 0, column);
int counter = 1;
for (int row = 0; row < gameSize; row++) {
char pawn = getPawnAtCoords(gameBoard, gameSize, row, column);
if ((pawn == candidate) && (pawn != '-')) {
counter++;
} else {
counter = 1;
candidate = pawn;
}
if (counter == gameDifficulty) {
return true;
}
}
}
return false;
}
有人知道对角线吗?
已经尝试了我自己能做的一切。
【问题讨论】:
-
在二维网格中,NW 到 SE 对角线位置是 {(0,0),(1,1),(2,2), ... ,(s, s)},其中秒是电路板尺寸 - 1。SW 到 NE 的对角线位置是 {(s,0), (s-1,1),(s-2,2), ... , (0,s)}。也就是说,SW到NE的对角线位置,行号和列号之和总是秒.
-
if ((pawn == candidate) && (pawn != '-'))中第二个条件的目的是什么?如果pawn == candidate那么它不可能等于 '-'。(pawn != '-')是无意义的噪音。去掉它。
标签: java spring algorithm tic-tac-toe online-game