1- var isX = true ;
2- var isValid = false ;
3- var cells = [ ] ;
4- var player = 1 ;
5- var computer = 0 ;
6- var currentPlayer = 1 ;
7- var result = "" ;
8- var intervalId ;
1+ let isX = true ;
2+ let isValid = false ;
3+ let cells = [ ] ;
4+ let player = 1 ;
5+ let computer = 0 ;
6+ let currentPlayer = 1 ;
7+ let result = '' ;
8+ let intervalId ;
99
10- $ ( document ) . ready ( function ( ) {
11- $ ( " #dialog" ) . dialog ( {
10+ $ ( document ) . ready ( ( ) => {
11+ $ ( ' #dialog' ) . dialog ( {
1212 resizable : false ,
1313 height : 160 ,
1414 modal : true ,
1515 buttons : {
16- "X" : function ( ) {
16+ X ( ) {
1717 isX = true ;
18- $ ( this ) . dialog ( " close" ) ;
18+ $ ( this ) . dialog ( ' close' ) ;
1919 startGame ( ) ;
2020 } ,
21- "O" : function ( ) {
21+ O ( ) {
2222 isX = false ;
23- $ ( this ) . dialog ( " close" ) ;
23+ $ ( this ) . dialog ( ' close' ) ;
2424 startGame ( ) ;
2525 }
2626 }
@@ -37,7 +37,7 @@ function startGame() {
3737 computer = 1 ;
3838 }
3939
40- var rnd = Math . round ( Math . random ( ) ) ;
40+ const rnd = Math . round ( Math . random ( ) ) ;
4141 if ( rnd === 1 ) {
4242 currentPlayer = player ;
4343 } else {
@@ -54,12 +54,12 @@ function loop() {
5454 currentPlayer = player ;
5555 }
5656
57- $ ( " .cell" ) . on ( " click" , function ( ) {
57+ $ ( ' .cell' ) . on ( ' click' , function ( ) {
5858 if ( isValid ) {
59- var sign = player === 0 ? "O" : "X" ;
59+ const sign = player === 0 ? 'O' : 'X' ;
6060
61- var i = $ ( this ) . attr ( "id" ) [ 1 ] - 1 ;
62- var j = $ ( this ) . attr ( "id" ) [ 2 ] - 1 ;
61+ const i = $ ( this ) . attr ( 'id' ) [ 1 ] - 1 ;
62+ const j = $ ( this ) . attr ( 'id' ) [ 2 ] - 1 ;
6363 if ( cells [ i ] [ j ] === - 1 ) {
6464 cells [ i ] [ j ] = player ;
6565 $ ( this ) . html ( sign ) ;
@@ -71,32 +71,30 @@ function loop() {
7171 }
7272 } ) ;
7373
74- var winner = whoWon ( cells ) ;
74+ const winner = whoWon ( cells ) ;
7575 if ( winner ) {
76- if ( winner === " computer" ) {
77- alert ( " You Lost, Better Luck Next Time." ) ;
76+ if ( winner === ' computer' ) {
77+ alert ( ' You Lost, Better Luck Next Time.' ) ;
7878 } else {
79- alert ( " Congratulations! You Won." ) ;
79+ alert ( ' Congratulations! You Won.' ) ;
8080 }
8181 result = winner ;
82+ } else if ( isTableFull ( cells ) ) {
83+ result = 'Tie' ;
84+ alert ( 'Its a tie' ) ;
8285 }
83- else if ( isTableFull ( cells ) ) {
84- result = "Tie" ;
85- alert ( "Its a tie" ) ;
86- }
87- if ( result !== "" ) {
86+ if ( result !== '' ) {
8887 clearInterval ( intervalId ) ;
89- result = "" ;
88+ result = '' ;
9089 cells = [ ] ;
9190 clearTable ( ) ;
9291 startGame ( ) ;
9392 }
9493}
9594
96-
9795function isTableFull ( cells ) {
98- for ( var i in cells ) {
99- for ( var j in cells [ i ] ) {
96+ for ( const i in cells ) {
97+ for ( const j in cells [ i ] ) {
10098 if ( cells [ i ] [ j ] === - 1 ) {
10199 return false ;
102100 }
@@ -108,58 +106,65 @@ function isTableFull(cells) {
108106function whoWon ( cells ) {
109107 //horizontal match
110108 for ( var i in cells ) {
111- if ( cells [ i ] [ 0 ] !== - 1 &&
109+ if (
110+ cells [ i ] [ 0 ] !== - 1 &&
112111 cells [ i ] [ 1 ] !== - 1 &&
113112 cells [ i ] [ 2 ] !== - 1 &&
114- cells [ i ] [ 0 ] === cells [ i ] [ 1 ] && cells [ i ] [ 0 ] === cells [ i ] [ 2 ] ) {
113+ cells [ i ] [ 0 ] === cells [ i ] [ 1 ] &&
114+ cells [ i ] [ 0 ] === cells [ i ] [ 2 ]
115+ ) {
115116 if ( cells [ i ] [ 0 ] === player ) {
116- return "player" ;
117- }
118- else {
119- return "computer" ;
117+ return 'player' ;
118+ } else {
119+ return 'computer' ;
120120 }
121121 }
122122 }
123123 //vertical match
124124 for ( var i in cells ) {
125- if ( cells [ 0 ] [ i ] !== - 1 &&
125+ if (
126+ cells [ 0 ] [ i ] !== - 1 &&
126127 cells [ 1 ] [ i ] !== - 1 &&
127128 cells [ 2 ] [ i ] !== - 1 &&
128- cells [ 0 ] [ i ] === cells [ 1 ] [ i ] && cells [ 0 ] [ i ] === cells [ 2 ] [ i ] ) {
129+ cells [ 0 ] [ i ] === cells [ 1 ] [ i ] &&
130+ cells [ 0 ] [ i ] === cells [ 2 ] [ i ]
131+ ) {
129132 if ( cells [ 0 ] [ i ] === player ) {
130- return "player" ;
131- }
132- else {
133- return "computer" ;
133+ return 'player' ;
134+ } else {
135+ return 'computer' ;
134136 }
135137 }
136138 }
137139
138140 //diagonal match
139- if ( ( cells [ 0 ] [ 0 ] !== - 1 &&
140- cells [ 1 ] [ 1 ] !== - 1 &&
141- cells [ 2 ] [ 2 ] !== - 1 &&
142- cells [ 0 ] [ 0 ] === cells [ 1 ] [ 1 ] && cells [ 0 ] [ 0 ] === cells [ 2 ] [ 2 ] ) ||
143- ( cells [ 0 ] [ 2 ] !== - 1 &&
141+ if (
142+ ( cells [ 0 ] [ 0 ] !== - 1 &&
143+ cells [ 1 ] [ 1 ] !== - 1 &&
144+ cells [ 2 ] [ 2 ] !== - 1 &&
145+ cells [ 0 ] [ 0 ] === cells [ 1 ] [ 1 ] &&
146+ cells [ 0 ] [ 0 ] === cells [ 2 ] [ 2 ] ) ||
147+ ( cells [ 0 ] [ 2 ] !== - 1 &&
144148 cells [ 1 ] [ 1 ] !== - 1 &&
145149 cells [ 2 ] [ 0 ] !== - 1 &&
146- cells [ 0 ] [ 2 ] === cells [ 1 ] [ 1 ] && cells [ 0 ] [ 2 ] === cells [ 2 ] [ 0 ] ) ) {
150+ cells [ 0 ] [ 2 ] === cells [ 1 ] [ 1 ] &&
151+ cells [ 0 ] [ 2 ] === cells [ 2 ] [ 0 ] )
152+ ) {
147153 if ( cells [ 1 ] [ 1 ] === player ) {
148- return "player" ;
149- }
150- else {
151- return "computer" ;
154+ return 'player' ;
155+ } else {
156+ return 'computer' ;
152157 }
153158 }
154159
155160 return false ;
156161}
157162
158163function computerMove ( ) {
159- var arr = freeCells ( ) ;
160- var arr2 = bestMove ( ) ;
161- var sign = computer === 0 ? "O" : "X" ;
162- var x = Math . round ( Math . random ( ) * arr . length ) ;
164+ const arr = freeCells ( ) ;
165+ const arr2 = bestMove ( ) ;
166+ const sign = computer === 0 ? 'O' : 'X' ;
167+ const x = Math . round ( Math . random ( ) * arr . length ) ;
163168
164169 if ( arr2 . length >= 1 ) {
165170 var i = arr2 [ 0 ] ;
@@ -169,22 +174,22 @@ function computerMove() {
169174 var j = arr [ x ] [ 1 ] ;
170175 }
171176 if ( ( arr . length >= 1 || arr2 . length >= 1 ) && cells [ i ] [ j ] === - 1 ) {
172- var a = parseInt ( i ) + 1 ;
173- var b = parseInt ( j ) + 1 ;
174- new Promise ( function ( resolve , reject ) {
175- $ ( "#c" + a + b ) . html ( sign ) ;
177+ const a = parseInt ( i ) + 1 ;
178+ const b = parseInt ( j ) + 1 ;
179+ new Promise ( ( resolve , reject ) => {
180+ $ ( '#c' + a + b ) . html ( sign ) ;
176181 resolve ( ) ;
177- } ) . then ( function ( ) {
182+ } ) . then ( ( ) => {
178183 cells [ i ++ ] [ j ++ ] = computer ;
179- } )
184+ } ) ;
180185 return 0 ;
181186 }
182187}
183188
184189function freeCells ( ) {
185- var arr = [ ] ;
186- for ( var i in cells ) {
187- for ( var j in cells [ i ] ) {
190+ const arr = [ ] ;
191+ for ( const i in cells ) {
192+ for ( const j in cells [ i ] ) {
188193 if ( cells [ i ] [ j ] === - 1 ) {
189194 arr . push ( [ i , j ] ) ;
190195 }
@@ -193,14 +198,15 @@ function freeCells() {
193198 return arr ;
194199}
195200
201+ // eslint-disable-next-line complexity
196202function bestMove ( ) {
197- var computerInLine = 0 ;
198- var playerInLine = 0 ;
199- var a = 0 ;
200- var maybe = null ;
203+ let computerInLine = 0 ;
204+ let playerInLine = 0 ;
205+ let a = 0 ;
206+ let maybe = null ;
201207 //check rows
202- for ( var i in cells ) {
203- for ( var j in cells [ i ] ) {
208+ for ( let i in cells ) {
209+ for ( let j in cells [ i ] ) {
204210 if ( cells [ i ] [ j ] !== - 1 ) {
205211 if ( cells [ i ] [ j ] === computer ) {
206212 computerInLine ++ ;
@@ -222,8 +228,8 @@ function bestMove() {
222228 }
223229
224230 //check columns
225- for ( var j in cells ) {
226- for ( var i in cells [ i ] ) {
231+ for ( let j in cells ) {
232+ for ( let i in cells [ i ] ) {
227233 if ( cells [ i ] [ j ] !== - 1 ) {
228234 if ( cells [ i ] [ j ] === computer ) {
229235 computerInLine ++ ;
@@ -245,12 +251,12 @@ function bestMove() {
245251 }
246252
247253 //check diagonals
248- var h = 0 ;
254+ let h = 0 ;
249255 a = - 1 ;
250- var b = - 1 ;
256+ let b = - 1 ;
251257 playerInLine = 0 ;
252258 computerInLine = 0 ;
253- for ( var k = 0 ; k < 3 ; k ++ ) {
259+ for ( let k = 0 ; k < 3 ; k ++ ) {
254260 if ( cells [ k ] [ h ] !== - 1 ) {
255261 if ( cells [ k ] [ h ] === computer ) {
256262 computerInLine ++ ;
@@ -277,7 +283,7 @@ function bestMove() {
277283 playerInLine = 0 ;
278284 computerInLine = 0 ;
279285
280- for ( var k = 2 ; k >= 0 ; k -- ) {
286+ for ( let k = 2 ; k >= 0 ; k -- ) {
281287 if ( cells [ k ] [ h ] !== - 1 ) {
282288 if ( cells [ k ] [ h ] === computer ) {
283289 computerInLine ++ ;
@@ -303,15 +309,15 @@ function bestMove() {
303309}
304310
305311function clearTable ( ) {
306- for ( var a = 1 ; a <= 3 ; a ++ ) {
307- for ( var b = 1 ; b <= 3 ; b ++ ) {
308- $ ( "#c" + a + b ) . html ( "" ) ;
312+ for ( let a = 1 ; a <= 3 ; a ++ ) {
313+ for ( let b = 1 ; b <= 3 ; b ++ ) {
314+ $ ( '#c' + a + b ) . html ( '' ) ;
309315 }
310316 }
311317}
312318
313319function emptyCells ( ) {
314- for ( var a = 0 ; a < 3 ; a ++ ) {
320+ for ( let a = 0 ; a < 3 ; a ++ ) {
315321 cells . push ( [ - 1 , - 1 , - 1 ] ) ;
316322 }
317- }
323+ }
0 commit comments