我可以建议你使用递归。我可能会误解你的意思,但无论如何:
bool isWin(int i, int j, int length) {
if (length >= 8)
return true;
if (canMoveTo(i + 1, j)) {
if (isWin(i + 1, j, length + 1))
return true;
}
if (canMoveTo(i - 1, j)) {
if (isWin(i - 1, j, length + 1))
return true;
}
if (canMoveTo(i, j + 1)) {
if (isWin(i, j + 1, length + 1))
return true;
}
if (canMoveTo(i, j - 1)) {
if (isWin(i, j - 1, length + 1))
return true;
}
return false;
}
bool isWin(int i, int j) {
int length = 0;
isWin(i, j, length);
}
..
main() {
for (int i = 0; i < HEIGHT; ++i) {
for (int j = 0; j < WIDTH; ++j) {
if (isTilePresent(i, j)) {
if (isWin(i, j)) {
if (isRed(i, j))
std::cout << "Red is won!" << std::endl;
else
std::cout << "White is won!" << std::endl;
}
}
}
}
}