Created
September 9, 2015 21:23
-
-
Save federicobucchi/581bf7065a5b342daa9a to your computer and use it in GitHub Desktop.
Tic Tac Toe game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
var player1 = new player('Federico', 'Bucchi', 'X'); | |
var player2 = new player('Mac', 'BookPro', 'O'); | |
var wins = [ | |
[1, 2, 3], | |
[4, 5, 6], | |
[7, 8, 9], | |
[1, 4, 7], | |
[2, 5, 8], | |
[3, 6, 9], | |
[1, 5, 9], | |
[3, 5, 7] | |
]; | |
var end = false; | |
var moves = 0; | |
var tableEl; | |
var tdEl; | |
var activeUser; | |
var maxMoves; | |
function player(name, lastname, symbol) { | |
this.name = name; | |
this.lastname = lastname; | |
this.symbol = symbol; | |
this.points = 0; | |
this.checks = []; | |
}; | |
function initTable () { | |
tableEl = document.getElementsByTagName('table')[0]; | |
tdEl = tableEl.getElementsByTagName('td'); | |
for (var i = 1; i <= tdEl.length; i++) { | |
tdEl[i - 1].setAttribute('class', i); | |
tdEl[i - 1].addEventListener('click', function() { | |
selectCell(this); | |
}, false); | |
maxMoves = i; | |
} | |
}; | |
function initGame () { | |
end = false; | |
moves = 0; | |
player1.checks = []; | |
player2.checks = []; | |
activeUser = player1; | |
for (var i = 0; i <= tdEl.length; i++) { | |
tdEl[i].innerHTML = ''; | |
} | |
}; | |
function switchPLayer () { | |
if (activeUser === player1) { | |
activeUser = player2; | |
} else { | |
activeUser = player1; | |
} | |
}; | |
function selectCell(cell) { | |
if (cell.innerHTML === '') { | |
cell.innerHTML = activeUser.symbol; | |
activeUser.checks.push(cell.className); | |
moves += 1; | |
checkEnd(); | |
} | |
}; | |
function checkEnd () { | |
var match; | |
for (var i = 0; i < wins.length; i++) { | |
match = 0; | |
for (var x = 0; x < activeUser.checks.length; x++) { | |
if (wins[i].indexOf(+activeUser.checks[x]) > -1) { | |
match += 1; | |
} | |
} | |
if (match >= 3) { | |
end = true; | |
break; | |
} | |
} | |
if (!end) { | |
if (maxMoves === moves) { | |
alert('Tie'); | |
initGame(); | |
} else { | |
switchPLayer(); | |
} | |
} else { | |
alert(activeUser.name + ' Wins'); | |
activeUser.points += 1; | |
initGame(); | |
} | |
}; | |
initTable(); | |
initGame(); | |
})() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment