Алгоритм для проверки кто выиграл в игру Крестики нолики

Всем привет, я пишу простую игру крестики нолики на 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;
  }

Ответы (0 шт):