Я создаю небольшую игру в крестики-нолики.
Когда наступает очередь за компьютером, я заставляю его выбирать случайное число, чтобы выбрать элемент из массива.
Моя проблема в том, что случайное число будет, например, 3, но элемент, выбранный из массива, будет не arr [3], а arr [4].
, это проблема, потому что если выбранное числоэто конец массива, он вернет неопределенное значение.
вот код javascript:
var grid = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9'];
var choice = 9;
function myFunction(clicked_id){
$('#' + clicked_id).html('X');
grid.splice(grid.indexOf(clicked_id), 1);
choice -= 1;
setTimeout(computer, 1000);
player.push(clicked_id);
findElement(player);
console.log(player);
console.log(grid);
console.log(grid.length)
}
function computer(){
var ran = Math.floor(Math.random() * choice);
var res = grid[ran - 1];
$('#' + res).html('O');
grid.splice(grid.indexOf(res), 1);
cpu.push(grid[ran]);
findElement(cpu);
choice -= 1;
console.log(ran);
console.log(cpu);
}
Вот что будет зарегистрировано в журнале консоли: ["item1"] -> На что я нажал
["item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9"] -> новый измененный массив послеusing splice.
8 -> длина нового массива
5 - случайное число, выбранное компьютером
["item8"] -> элемент, выбранный компьютером в массиве (arr [6])
'item6' - это флажок в игре Tic Tac Toe.
Вот ссылка на мой кодовый блок, чтобы увидеть код в действии.
https://codepen.io/nico3d911/pen/odvmPR?editors=0001
чтAnks за вашу помощь!