У меня есть следующий тест многомерный массив, который отражает стандартный Connect Four: игрового поляJavascript - Connect Four игра проверки
var board = [['-','-','-','-','-','-','-'],
['-','-','-','-','-','-','-'],
['-','-','-','R','R','R','R'],
['-','-','-','Y','Y','R','Y'],
['-','-','-','Y','R','Y','Y'],
['-','-','Y','Y','R','R','R']];
Я пишу проверки Js, который проверяет каждый элемент массива доски для 4- в любом виде, либо вниз, либо по диагонали. Глядя на тестовую панель выше, мой валидатор должен вернуть R
в качестве правильного ответа, так как в третьем ряду есть соединительное соответствие 4 R
элементов. Вот мой код:
function fourTogether(a,b,c,d) {
return (a != '-') && (a == b) && (a == c) && (a == d);
}
function connectFour(board) {
// check RIGHT
for (row=col=0; row<3 && col<7; row++, col++) {
if (fourTogether(board[row][col], board[row+1][col], board[row+2][col], board[row+3][col])) {
return board[row][col];
}
}
// check DOWN
for (row=col= 0; row<6 && col<4; row++, col++) {
if (fourTogether(board[row][col], board[row][col+1], board[row][col+2], board[row][col+3])) {
return board[row][col];
}
}
// check DIAGONAL to RIGHT
for (row=col=0; row<3 && col<4; row++, col++) {
if (fourTogether(board[row][col], board[row+1][col+1], board[row+2][col+2], board[row+3][col+3])) {
return board[row][col];
}
}
// check DIAGONAL to LEFT
for (row=3, col=0; row<6 && col<4; row++, col++) {
if (fourTogether(board[row][col], board[row-1][col+1], board[row-2][col+2], board[row-3][col+3])) {
return board[row][col];
}
}
return board.indexOf('-') > -1 ? 'in progress' : 'draw';
}
Так что я в основном с помощью функции fourTogether
установить 4-в своем роде соответствия, а также опуская '-'
элементы (которые представляют собой незаполненные boardslots). Затем в функции connectFour
я использую четыре разных цикла FOR
для итерации по всему массиву в зависимости от отмеченного направления, затем добавляю оператор IF
, который проверяет функцию fourTogether
на добавочные элементы платы. Наконец, в конце есть тройное утверждение, которое должно возвращать либо «ничью», либо «игру в процессе», если на доске нет 4-х видов соответствия, в зависимости от наличия пустых '-'
плацдармов. К сожалению, я возвращаю undefined
, и я немного не понимаю, где именно код не работает. Любая помощь или указатели были бы очень оценены.
'SyntaxError: Неожиданный маркер возврата (...)' , переместите свой 'return' перед тернарный оператор в конце функции. Кроме того, 'fourTogether' не имеет оператора возврата –
Я уверен, что те, для циклов, не делают то, что вы ожидаете. – James
спасибо Пол.У меня было заявление о возвращении в моих четырех словах, я ошибочно опущен здесь. Я отредактировал соответственно. – dpg5000