-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
75 lines (60 loc) · 2.18 KB
/
script.js
File metadata and controls
75 lines (60 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const statusDisplay=document.querySelector(".game--status");
let gameActive=true;
let currPlayer="X";
let gameState=["","","","","","","","",""];
// for dynamic we are using function for winningMsg,drawMsg and currPlayerTurn.
const winningMessage=()=> `Player ${currPlayer} Won!`;
const drawMessage=()=> `Game is draw !`;
const currPlayerTurn=()=> `it's player ${currPlayer}'s turn`;
const winningConditions=[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]];
function handleResultValidation(){
let result=false;
for(let i=0;i<8;i++){
const condition=winningConditions[i];
let a=gameState[condition[0]];
let b=gameState[condition[1]];
let c=gameState[condition[2]];
if(a===""||b===""||c===""){
continue;
}
if(a===b && b===c){
result=true;
break;
}
}
if(result){
statusDisplay.innerHTML=winningMessage();
gameActive=false;
return;
}
// handle draw condition
let roundDraw=!gameState.includes("");
if(roundDraw){
statusDisplay.innerHTML=drawMessage();
gameActive=false;
return;
}
// player change
currPlayer=currPlayer=="X" ? "O" :"X";
statusDisplay.innerHTML=currPlayerTurn();
}
function handleCellClick(clickedCellEvent){
const clickedCell=clickedCellEvent.target; //it will give node which cell is clicked
const clickedIndex=parseInt(clickedCell.getAttribute("cell-Index"));
//console.log(clickedIndex);
if(gameState[clickedIndex]!="" || !gameActive){
return;
}
gameState[clickedIndex]=currPlayer;
clickedCell.innerHTML=currPlayer;
handleResultValidation();
}
function handleRestartClick(){
gameActive=true;
currPlayer="X";
gameState=["","","","","","","","",""];
statusDisplay.innerHTML=currPlayerTurn();
document.querySelectorAll(".cell").forEach((cell)=>(cell.innerHTML=""));
}
document.querySelectorAll(".cell").forEach((cell)=>cell.addEventListener("click",handleCellClick));
document.querySelector(".game--restart").addEventListener("click",handleRestartClick);