В настоящее время я строю крестики-нолики в ванильном javascript.Однако игра "вроде" сделана, но я пытаюсь добавить уровни сложности.Поэтому в основном я хочу на каждом ходу игрока получить максимально возможную выигрышную комбинацию, основанную на его ходах, и поместить метку компьютера в место недостающих выигрышных комбинаций.
Допустим, у меня есть многомерный массивс выигрышными комбинациями
winningCombinations: [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 4, 8],
[0, 3, 6],
[1, 4, 7],
[2, 4, 6],
[2, 5, 8]
]
И игрок X начинает свои ходы.Таким образом, его первый ход равен 0, поэтому сохраняю текущую комбинацию игрока в массиве.Итак, на первом ходу текущая гребенка составляет
currentPlayerCombintation: [0]
, поэтому я хочу вернуть [0,1,2], [0,4,8] и [0,3,6] из массива выигрышной комбинации,
Однако игрок делает свой второй ход, поэтому он ставит перед собой цель 4
, поэтому
currentPlayerCombination: [0,4]
, и теперь я хочу вернуть максимально возможную выигрышную комбинацию, которая составляет [0,4,8].
Я пробовал много вещей, включая every()
, some()
, filter()
, но не смог добиться того, чего хочу.
Я пробовал что-то вроде
for(let i = 0; i < this.currentPlayerCombination.length ; i++) {
this.winningCombinations.some((arr) => {
if(arr.includes(this.currentPlayerCombination[i])) {
console.log(arr);
}
});
}
Но это не сработало, как и ожидалось :(