tic-tac-toe-2d/script.js

107 lines
3.1 KiB
JavaScript
Raw Normal View History

2021-02-20 16:32:50 +01:00
var table;
var gamearea;
var move_number;
window.addEventListener("load", function(){
document.getElementById("start").addEventListener("click", function(){
document.getElementById("message").hidden = true;
document.getElementById("thegame").hidden = false;
document.getElementById("for-button").hidden = false;
if(document.getElementById('optionslist').value !== "2") {
new_game("x");
}
else if(document.getElementById('optionslist').value == "2") {
new_game("O");
}
if (document.getElementById('optionslist').value == "1") {
alert("Musisz wybrać O albo X!");
location.reload();
}
});
});
document.getElementById("restart").addEventListener("click", function() {
if(document.getElementById('optionslist').value !== "2") {
new_game("x");
}
else if(document.getElementById('optionslist').value == "2") {
new_game("O");
}
});
gamearea = document.getElementById("gamearea");
gamearea.addEventListener("click", function(eventtarget){
if(eventtarget.target.nodeName != "TH" || eventtarget.target.hasAttribute("place"))
return false;
eventtarget.target.setAttribute("place", gamearea.getAttribute("move"));
var move = 1;
if(gamearea.getAttribute("move") == "x")
{
move = -1;
gamearea.setAttribute("move", "O");
}
else
gamearea.setAttribute("move", "x");
move_number++;
table[parseInt(eventtarget.target.getAttribute("x"))][parseInt(eventtarget.target.getAttribute("y"))] = move;
switch(is_end())
{
case false: break;
case -1:
show_message("Wygrał krzyżyk!");
break;
case 1:
show_message("Wygrało kółko!");
break;
case -2:
show_message("Remis");
break;
}
});
function show_message(areatext)
{
document.getElementById("areatext").innerHTML = areatext;
document.getElementById("whos").innerHTML = "A tym razem?";
gamearea.removeAttribute("move");
document.getElementById("message").removeAttribute("hidden");
document.getElementById("for-button").hidden = true;
};
function new_game(begin)
{
move_number = 0;
table = new Array(3);
for(var i = 0; i < table.length;i++)
{
table[i] = new Array(table.length);
for(var x = 0; x < table.length; x++)
table[i][x] = 0;
}
var filling_area = gamearea.querySelectorAll("th[place]");
for(var i = 0; i < filling_area.length; i++)
filling_area[i].removeAttribute("place");
gamearea.setAttribute("move", begin);
};
function is_end()
{
for(var i = 0; i < 3; i++)
{
if(Math.abs(table[0][i] + table[1][i] + table[2][i]) == 3)
return table[0][i];
if(Math.abs(table[i][0] + table[i][1] + table[i][2]) == 3)
return table[i][0];
}
if(Math.abs(table[0][0] + table[1][1] + table[2][2]) == 3)
return table[0][0];
if(Math.abs(table[0][2] + table[1][1] + table[2][0]) == 3)
return table[0][2];
if(move_number >= 9)
return -2;
return false;
}