From 3abed3973308c7cb7f2258d4b5633a41527b4d00 Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Sun, 14 Jan 2024 20:53:20 -0600 Subject: added vitory check --- app.js | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'app.js') diff --git a/app.js b/app.js index b804185..29fd993 100644 --- a/app.js +++ b/app.js @@ -6,6 +6,47 @@ const boardTurn = function() { console.log('clicked', this.id, this.bitBoard); }; +const checkVictory = function() { + let checkSum = 0; + let victory = false; + const rows = [ + //rows + [0, 1, 2], + [3, 4, 5], + [6, 7, 8], + //columns + [0, 3, 6], + [1, 4, 7], + [2, 5, 8], + //diagonals + [0, 4, 8], + [2, 4, 6] + ]; + const xBoard = this.bitBoard.slice(0, 9); + const oBoard = this.bitBoard.slice(9, 18); + let checkRow = []; + + rows.forEach(row => { + checkRow = xBoard.filter((_, index) => row.includes(index)); + checkSum = checkRow.reduce((acc, value) => acc + value, 0); + if (checkSum == 3) { + victory = true; + board.victory_row = row; + }; + checkRow = oBoard.filter((_, index) => row.includes(index)); + checkSum = checkRow.reduce((acc, value) => acc + value, 0); + if (checkSum == 3) { + victory = true; + board.victory_row = row; + }; + }); + board.victory = victory; + if (victory) { + board.victor = board.turn; + }; + return(victory); +}; + const squareClick = function() { console.log('clicked', this.id, this.innerText, this.position); if (this.innerText == '') { @@ -15,6 +56,11 @@ const squareClick = function() { let pos = 9 * (this.board.turn==turns[false]); pos += this.position - 1 this.board.bitBoard[pos] = 1; + //check victory + this.board.checkVictory(); + if (this.board.victory) { + console.log(`${this.board.victor} wins!!!`); + }; //Switch player turn this.board.turn = turns[this.board.turn==turns[false]] }; @@ -31,8 +77,9 @@ const initBoard = function(board) { board.addEventListener('click', boardTurn); board.turn = turns[true]; board.bitBoard = Array(18).fill(0); + board.checkVictory = checkVictory; }; const board = document.getElementById('board'); -initBoard(board); \ No newline at end of file +initBoard(board); -- cgit v1.2.3