Алгоритм для проверки кто выиграл в игру Крестики нолики
Всем привет, я пишу простую игру крестики нолики на TypeScript. Не могу вообще разобраться как проверять кто победил. Какие параметры нужно передавать и тд. Вот мой код, который работает так, что после моего хода коипютер рандомно ставить куда то "Нолик" без какой либо логики. Ставит где индекс еще не занят.
@Component({
selector: 'app-game-page',
templateUrl: './game-page.component.html',
styleUrls: ['./game-page.component.css']
})
export class GamePageComponent implements OnInit {
fieldNumbers: number [] = [0,1,2,3,4,5,6,7,8];
showButton= true;
arrayPlayer: boolean [] = [false, false,false, false,false, false,false, false,false];
arrayComputer: boolean [] = [false, false,false, false,false, false,false, false,false];
constructor() {}
ngOnInit(): void {}
reload (){
window.location.reload()
}
onClick(index: number) {
this.arrayPlayer[index] = true;
this.arrayComputer[this.setPosition(index)] = true;
}
setPosition(index: number): number{
console.log(index)
this.fieldNumbers.splice(this.fieldNumbers.indexOf(index) , 1);
console.log("fieldnumbers1: "+this.fieldNumbers);
let randomIndex= this.fieldNumbers[Math.floor(Math.random() * this.fieldNumbers.length)];
console.log("randomindex: "+randomIndex);
this.fieldNumbers.splice(this.fieldNumbers.indexOf(randomIndex) , 1);
console.log("fieldnumbers2: "+this.fieldNumbers);
return randomIndex;
}
getPlayerSignX(index: number): boolean {
if (this.player == 'X') {
return this.arrayPlayer[index];
} else {
return this.arrayComputer[index];
}
}
getPlayerSignO(index: number): boolean {
if (this.player == 'O') {
return this.arrayPlayer[index];
} else {
return this.arrayComputer[index];
}
}
PlayerXO(isX: boolean): void {
this.player = isX ? 'X' : 'O';
this.showButton = false;
}
}
нашел вот такой пример на проторе интернета, но не много не могу понять как мне его правильно переписать под себя.
function calculateWinner(squares: any[]) {
const lines = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
for (let i = 0; i < lines.length; i++) {
const [a, b, c] = lines[i];
if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
return squares[a];
}
}
return null;
}