Задание: необходимо реализовать ИИ при игре в крестики-нолики на джаве. Самый первый шаг рандомный выбор ячейки и проверка соседних ячеек на, скажем, нолики. реализовал в лоб:
if (map[i+1][j] == DOT_O ||
map[i+1][j+1] == DOT_O ||
map[i+1][j-1] == DOT_O ||
map[i][j+1] == DOT_O ||
map[i][j-1] == DOT_O ||
map[i-1][j] == DOT_O ||
map[i-1][j+1] == DOT_O ||
map[i-1][j-1] == DOT_O
) {
x = i;
y = j;
}
но тут сразу ошибка, т.к. при обращении к ячейке типа i+1 можно выйти за край массива. Теперь сам завис не пойму как подойти к проблеме. Хелп, пожалуйста.
boolean checkNearCell(int row, int col, int val) {
int startRow = Math.max(row - 1, 0);
int stopRow = Math.min(row + 1, map.length - 1);
for (int i = startRow; i <= stopRow; i++) {
int startCol = Math.max(col - 1, 0);
int stopCol = Math.min(col + 1, map[i].length - 1);
for (int j = startCol; j <= stopCol; j++) {
if (map[i][j] == val && !(i == row && j == col))
return true;
}
}
return false;
}
if (checkNearCell(i, j, DOT_O) {
x = i;
y = j;
}
решил всё таки в лоб, просто перед каждой проверкой " или " добавил проверку " и " на (i+1 < SIZE), т.е. что бы не проверял ячейку с координатой за пределами массива. спасибо.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Выводит эти значения, но RUB,PLN,JPY,DKK и так дальше, не форматированы
друзья! Хотелось бы спросить про && и ||Если используется двойной амперсанд и первое выражение ложно (false), то второе выражение даже не будет...