Tic Tac Toe Winning Function

99
9

function checkWin(){
if (arro[0] === arro[1] === arro[2] === 1 || arro[3] === arro[4] === arro[5] === 1 || arro[6] === arro[7] === arro[8] === 1 || arro[0] === arro[4] === arro[8] === 1 || arro[2] === arro[4] === arro[6] === 1 || arro[0] === arro[3] === arro[6] === 1 || arro[1] === arro[4] === arro[7] === 1 || arro[2] === arro[5] === arro[8] === 1) {
console.log("O Won");
return "O";
}
else if (arrx[0] === arrx[1] === arrx[2] === 1 || arrx[3] === arrx[4] === arrx[5] === 1 || arrx[6] === arrx[7] === arrx[8] === 1 || arrx[0] === arrx[4] === arrx[8] === 1 || arrx[2] === arrx[4] === arrx[6] === 1 || arrx[0] === arrx[3] === arrx[6] === 1 || arrx[1] === arrx[4] === arrx[7] === 1 || arrx[2] === arrx[5] === arrx[8] === 1){
console.log("X Won");
return "X";
}
else
return "notwin"; }

Здесь arro - это матрица для O, а arrx - массив для X. Запуск этого в консоли возвращает notwin каждый раз. Некоторая помощь будет отличной. Благодарю.

спросил(а) 2021-01-25T18:31:41+03:00 4 месяца, 3 недели назад
1
Решение
77

Вы не можете совмещать проверки условий. Когда вы выполняете a === b === c, то, что вы делаете, сравнивает значение результата выражения a === b (которое будет true [если они одинаковы] или false [если нет] ) со значением c.

Вместо этого вам необходимо объединить их с &&, например: a === b && b === c.

Например:

function checkWin() {
if ((arro[0] === arro[1] && arro[1] === arro[2]) ||
(arro[3] === arro[4] && arro[4] === arro[5]) ||
/*...and so on...*/
) {
console.log("O Won");
return "O";
}
// ...

Сторона примечания: если вы return из блока, прикрепленного к if, нет необходимости в else до следующего if. Это безвредно, но бессмысленно.

ответил(а) 2021-01-25T18:31:41+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема