A basic Tic Tac Toe game built using HTML/JavaScript/CSS. Link: https://github.com/vasanthk/Tic-Tac-Toe
A Pen by Erik Nomitch on CodePen.
| <div id="tictactoe"></div> | |
| <div align="left"> | |
| <span id='turn'>Player X</span> | |
| </div> | |
| /* | |
| * Tic Tac Toe | |
| * | |
| * A Tic Tac Toe game in HTML/JavaScript/CSS. | |
| * | |
| * @author: Vasanth Krishnamoorthy | |
| */ | |
| var N_SIZE = 3, | |
| EMPTY = " ", | |
| boxes = [], | |
| turn = "X", | |
| score, | |
| moves; | |
| /* | |
| * Initializes the Tic Tac Toe board and starts the game. | |
| */ | |
| function init() { | |
| var board = document.createElement('table'); | |
| board.setAttribute("border", 1); | |
| board.setAttribute("cellspacing", 0); | |
| var identifier = 1; | |
| for (var i = 0; i < N_SIZE; i++) { | |
| var row = document.createElement('tr'); | |
| board.appendChild(row); | |
| for (var j = 0; j < N_SIZE; j++) { | |
| var cell = document.createElement('td'); | |
| cell.setAttribute('height', 120); | |
| cell.setAttribute('width', 120); | |
| cell.setAttribute('align', 'center'); | |
| cell.setAttribute('valign', 'center'); | |
| cell.classList.add('col' + j,'row' + i); | |
| if (i == j) { | |
| cell.classList.add('diagonal0'); | |
| } | |
| if (j == N_SIZE - i - 1) { | |
| cell.classList.add('diagonal1'); | |
| } | |
| cell.identifier = identifier; | |
| cell.addEventListener("click", set); | |
| row.appendChild(cell); | |
| boxes.push(cell); | |
| identifier += identifier; | |
| } | |
| } | |
| document.getElementById("tictactoe").appendChild(board); | |
| startNewGame(); | |
| } | |
| /* | |
| * New game | |
| */ | |
| function startNewGame() { | |
| score = { | |
| "X": 0, | |
| "O": 0 | |
| }; | |
| moves = 0; | |
| turn = "X"; | |
| boxes.forEach(function (square) { | |
| square.innerHTML = EMPTY; | |
| }); | |
| } | |
| /* | |
| * Check if a win or not | |
| */ | |
| function win(clicked) { | |
| // Get all cell classes | |
| var memberOf = clicked.className.split(/\s+/); | |
| for (var i = 0; i < memberOf.length; i++) { | |
| var testClass = '.' + memberOf[i]; | |
| var items = contains('#tictactoe ' + testClass, turn); | |
| // winning condition: turn == N_SIZE | |
| if (items.length == N_SIZE) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| function contains(selector, text) { | |
| var elements = document.querySelectorAll(selector); | |
| return [].filter.call(elements, function(element){ | |
| return RegExp(text).test(element.textContent); | |
| }); | |
| } | |
| /* | |
| * Sets clicked square and also updates the turn. | |
| */ | |
| function set() { | |
| if (this.innerHTML !== EMPTY) { | |
| return; | |
| } | |
| this.innerHTML = turn; | |
| moves += 1; | |
| score[turn] += this.identifier; | |
| if (win(this)) { | |
| alert('Winner: Player ' + turn); | |
| startNewGame(); | |
| } else if (moves === N_SIZE * N_SIZE) { | |
| alert("Draw"); | |
| startNewGame(); | |
| } else { | |
| turn = turn === "X" ? "O" : "X"; | |
| document.getElementById('turn').textContent = 'Player ' + turn; | |
| } | |
| } | |
| init(); |
| table { | |
| border-collapse:collapse; | |
| } | |
| td { | |
| background-color: black; | |
| border: 3px solid white; | |
| font-size:80px; | |
| color:#ffffff; | |
| border-radius: 10px 10px 10px 10px; | |
| } |
A basic Tic Tac Toe game built using HTML/JavaScript/CSS. Link: https://github.com/vasanthk/Tic-Tac-Toe
A Pen by Erik Nomitch on CodePen.