1+ var board = [ ] ;
2+ for ( var i = 1 ; i <= 9 ; i ++ ) {
3+ board [ i ] = document . getElementById ( "B" + i . toString ( ) ) ;
4+ }
5+ var alertbox = document . getElementById ( "alert-box" ) ;
6+ var turn = 1 ;
7+ var playSymbol = "X"
8+ var isOver = false ;
9+
10+
11+ function turnPlayed ( box ) {
12+ if ( board [ box ] . innerHTML !== "" ) {
13+ alertbox . innerHTML = "This box is already played" ;
14+ return ;
15+ }
16+ if ( turn % 2 == 0 ) {
17+ playSymbol = "O" ;
18+ }
19+ if ( isOver ) {
20+ return ;
21+ }
22+ board [ box ] . innerHTML = playSymbol ;
23+ var winningCondition = checkForWinners ( ) ;
24+ if ( winningCondition > 0 ) {
25+ showWinner ( winningCondition ) ;
26+ isOver = true ;
27+ }
28+ else {
29+ turn ++ ;
30+ if ( turn == 10 ) {
31+ callDraw ( ) ;
32+ }
33+ playSymbol = "X" ;
34+ }
35+ }
36+
37+ function checkForWinners ( ) {
38+ if ( board [ 5 ] . innerHTML === playSymbol ) {
39+ if ( board [ 1 ] . innerHTML === playSymbol && board [ 9 ] . innerHTML === playSymbol ) {
40+ return 1 ;
41+ }
42+ else if ( board [ 3 ] . innerHTML === playSymbol && board [ 7 ] . innerHTML === playSymbol ) {
43+ return 2 ;
44+ }
45+ else if ( board [ 4 ] . innerHTML === playSymbol && board [ 6 ] . innerHTML === playSymbol ) {
46+ return 4 ;
47+ }
48+ else if ( board [ 2 ] . innerHTML === playSymbol && board [ 8 ] . innerHTML === playSymbol ) {
49+ return 7 ;
50+ }
51+ }
52+ if ( board [ 1 ] . innerHTML === playSymbol ) {
53+ if ( board [ 2 ] . innerHTML === playSymbol && board [ 3 ] . innerHTML === playSymbol ) {
54+ return 3 ;
55+ }
56+ if ( board [ 4 ] . innerHTML === playSymbol && board [ 7 ] . innerHTML === playSymbol ) {
57+ return 6 ;
58+ }
59+ }
60+ if ( board [ 9 ] . innerHTML === playSymbol ) {
61+ if ( board [ 7 ] . innerHTML === playSymbol && board [ 8 ] . innerHTML === playSymbol ) {
62+ return 5 ;
63+ }
64+ if ( board [ 6 ] . innerHTML === playSymbol && board [ 3 ] . innerHTML === playSymbol ) {
65+ return 8 ;
66+ }
67+ }
68+ return - 1 ;
69+ }
70+
71+ function showWinner ( winningCondition ) {
72+ var turnedElements = [ ] ;
73+ if ( winningCondition === 1 ) {
74+ turnedElements = [ 1 , 5 , 9 ] ;
75+ }
76+ else if ( winningCondition === 2 ) {
77+ turnedElements = [ 3 , 5 , 7 ] ;
78+ }
79+ else if ( winningCondition === 3 ) {
80+ turnedElements = [ 1 , 2 , 3 ] ;
81+ }
82+ else if ( winningCondition === 4 ) {
83+ turnedElements = [ 4 , 5 , 6 ] ;
84+ }
85+ else if ( winningCondition === 5 ) {
86+ turnedElements = [ 7 , 8 , 9 ] ;
87+ }
88+ else if ( winningCondition === 6 ) {
89+ turnedElements = [ 1 , 4 , 7 ] ;
90+ }
91+ else if ( winningCondition === 7 ) {
92+ turnedElements = [ 2 , 5 , 8 ] ;
93+ }
94+ else if ( winningCondition === 8 ) {
95+ turnedElements = [ 3 , 6 , 9 ] ;
96+ }
97+ for ( i of turnedElements ) {
98+ board [ i ] . className = "winner" ;
99+ }
100+ alertbox . innerHTML = playSymbol + " player has Won!" ;
101+ isOver = true ;
102+ }
103+
104+ function callDraw ( ) {
105+ alertbox . innerHTML = "The game has ended in a Draw." ;
106+ }
107+
108+ function reset ( ) {
109+ for ( var i = 1 ; i < board . length ; i ++ ) {
110+ board [ i ] . innerHTML = "" ;
111+ board [ i ] . className = "" ;
112+ }
113+ alertbox . innerHTML = ""
114+ turn = 1 ;
115+ playSymbol = "X" ;
116+ isOver = false ;
117+ }
0 commit comments