1
- import React , { Component } from " react" ;
2
- import Row from " ./Row" ;
3
- import { BoardContent , Scoreboard , Player } from " ../types/types" ;
1
+ import React , { Component } from ' react' ;
2
+ import Row from ' ./Row' ;
3
+ import { BoardContent , Scoreboard , Player } from ' ../types/types' ;
4
4
5
5
type BoardState = {
6
6
board : BoardContent ;
@@ -15,17 +15,17 @@ class Board extends Component<{}, BoardState> {
15
15
super ( props ) ;
16
16
this . state = {
17
17
board : this . newBoard ( ) ,
18
- currentPlayer : "X" ,
18
+ currentPlayer : 'X' ,
19
19
gameOver : false ,
20
- message : "" ,
20
+ message : '' ,
21
21
scoreboard : { X : 0 , O : 0 } ,
22
22
} ;
23
23
24
24
this . resetBoard = this . resetBoard . bind ( this ) ;
25
25
this . handleBoxClick = this . handleBoxClick . bind ( this ) ;
26
26
}
27
27
28
- componentDidUpdate ( ) :void {
28
+ componentDidUpdate ( ) : void {
29
29
this . checkForWinner ( ) ;
30
30
}
31
31
@@ -36,9 +36,9 @@ class Board extends Component<{}, BoardState> {
36
36
*/
37
37
newBoard ( ) : BoardContent {
38
38
return [
39
- [ "-" , "-" , "-" ] ,
40
- [ "-" , "-" , "-" ] ,
41
- [ "-" , "-" , "-" ] ,
39
+ [ '-' , '-' , '-' ] ,
40
+ [ '-' , '-' , '-' ] ,
41
+ [ '-' , '-' , '-' ] ,
42
42
] ;
43
43
}
44
44
@@ -51,7 +51,7 @@ class Board extends Component<{}, BoardState> {
51
51
this . setState ( {
52
52
gameOver : false ,
53
53
board : this . newBoard ( ) ,
54
- message : "" ,
54
+ message : '' ,
55
55
} ) ;
56
56
}
57
57
@@ -65,41 +65,25 @@ class Board extends Component<{}, BoardState> {
65
65
66
66
const spacesLeft = ( ) : boolean => {
67
67
for ( let i of board ) {
68
- if ( i . includes ( "-" ) ) return true ;
68
+ if ( i . includes ( '-' ) ) return true ;
69
69
}
70
70
return false ;
71
71
} ;
72
72
73
73
if ( ! gameOver ) {
74
74
// win conditions: matching rows, columns, or diagonals, that are not empty('-')
75
75
if (
76
- ( board [ 0 ] [ 0 ] === board [ 0 ] [ 1 ] &&
77
- board [ 0 ] [ 1 ] === board [ 0 ] [ 2 ] &&
78
- board [ 0 ] [ 2 ] !== "-" ) ||
79
- ( board [ 1 ] [ 0 ] === board [ 1 ] [ 1 ] &&
80
- board [ 1 ] [ 1 ] === board [ 1 ] [ 2 ] &&
81
- board [ 1 ] [ 2 ] !== "-" ) ||
82
- ( board [ 2 ] [ 0 ] === board [ 2 ] [ 1 ] &&
83
- board [ 2 ] [ 1 ] === board [ 2 ] [ 2 ] &&
84
- board [ 2 ] [ 2 ] !== "-" ) ||
85
- ( board [ 0 ] [ 0 ] === board [ 1 ] [ 0 ] &&
86
- board [ 1 ] [ 0 ] === board [ 2 ] [ 0 ] &&
87
- board [ 2 ] [ 0 ] !== "-" ) ||
88
- ( board [ 0 ] [ 1 ] === board [ 1 ] [ 1 ] &&
89
- board [ 1 ] [ 1 ] === board [ 2 ] [ 1 ] &&
90
- board [ 2 ] [ 1 ] !== "-" ) ||
91
- ( board [ 0 ] [ 2 ] === board [ 1 ] [ 2 ] &&
92
- board [ 1 ] [ 2 ] === board [ 2 ] [ 2 ] &&
93
- board [ 2 ] [ 2 ] !== "-" ) ||
94
- ( board [ 0 ] [ 0 ] === board [ 1 ] [ 1 ] &&
95
- board [ 1 ] [ 1 ] === board [ 2 ] [ 2 ] &&
96
- board [ 2 ] [ 2 ] !== "-" ) ||
97
- ( board [ 2 ] [ 0 ] === board [ 1 ] [ 1 ] &&
98
- board [ 1 ] [ 1 ] === board [ 0 ] [ 2 ] &&
99
- board [ 0 ] [ 2 ] !== "-" )
76
+ ( board [ 0 ] [ 0 ] === board [ 0 ] [ 1 ] && board [ 0 ] [ 1 ] === board [ 0 ] [ 2 ] && board [ 0 ] [ 2 ] !== '-' ) ||
77
+ ( board [ 1 ] [ 0 ] === board [ 1 ] [ 1 ] && board [ 1 ] [ 1 ] === board [ 1 ] [ 2 ] && board [ 1 ] [ 2 ] !== '-' ) ||
78
+ ( board [ 2 ] [ 0 ] === board [ 2 ] [ 1 ] && board [ 2 ] [ 1 ] === board [ 2 ] [ 2 ] && board [ 2 ] [ 2 ] !== '-' ) ||
79
+ ( board [ 0 ] [ 0 ] === board [ 1 ] [ 0 ] && board [ 1 ] [ 0 ] === board [ 2 ] [ 0 ] && board [ 2 ] [ 0 ] !== '-' ) ||
80
+ ( board [ 0 ] [ 1 ] === board [ 1 ] [ 1 ] && board [ 1 ] [ 1 ] === board [ 2 ] [ 1 ] && board [ 2 ] [ 1 ] !== '-' ) ||
81
+ ( board [ 0 ] [ 2 ] === board [ 1 ] [ 2 ] && board [ 1 ] [ 2 ] === board [ 2 ] [ 2 ] && board [ 2 ] [ 2 ] !== '-' ) ||
82
+ ( board [ 0 ] [ 0 ] === board [ 1 ] [ 1 ] && board [ 1 ] [ 1 ] === board [ 2 ] [ 2 ] && board [ 2 ] [ 2 ] !== '-' ) ||
83
+ ( board [ 2 ] [ 0 ] === board [ 1 ] [ 1 ] && board [ 1 ] [ 1 ] === board [ 0 ] [ 2 ] && board [ 0 ] [ 2 ] !== '-' )
100
84
) {
101
85
// winner is the person who's turn was previous
102
- const winner : Player = currentPlayer === "X" ? "O" : "X" ;
86
+ const winner : Player = currentPlayer === 'X' ? 'O' : 'X' ;
103
87
104
88
this . setState ( {
105
89
gameOver : true ,
@@ -110,7 +94,7 @@ class Board extends Component<{}, BoardState> {
110
94
} else if ( ! spacesLeft ( ) ) {
111
95
this . setState ( {
112
96
gameOver : true ,
113
- message : " Draw!" ,
97
+ message : ' Draw!' ,
114
98
} ) ;
115
99
}
116
100
}
@@ -123,30 +107,25 @@ class Board extends Component<{}, BoardState> {
123
107
[ ...this . state . board [ 2 ] ] ,
124
108
] ;
125
109
boardCopy [ row ] [ column ] = this . state . currentPlayer ;
126
- const newPlayer : Player = this . state . currentPlayer === "X" ? "O" : "X" ;
110
+ const newPlayer : Player = this . state . currentPlayer === 'X' ? 'O' : 'X' ;
127
111
this . setState ( { board : boardCopy , currentPlayer : newPlayer } ) ;
128
112
}
129
113
130
114
render ( ) : JSX . Element {
131
115
const rows : Array < JSX . Element > = [ ] ;
132
116
for ( let i = 0 ; i < 3 ; i ++ ) {
133
117
rows . push (
134
- < Row
135
- key = { i }
136
- row = { i }
137
- handleBoxClick = { this . handleBoxClick }
138
- values = { this . state . board [ i ] }
139
- />
118
+ < Row key = { i } row = { i } handleBoxClick = { this . handleBoxClick } values = { this . state . board [ i ] } /> ,
140
119
) ;
141
120
}
142
121
// const { X, O }: Scoreboard = this.state.scoreboard;
143
122
144
123
return (
145
- < div className = " board" >
124
+ < div className = ' board' >
146
125
< h1 > Tic Tac Toe</ h1 >
147
126
{ this . state . gameOver && < h4 > { this . state . message } </ h4 > }
148
127
{ rows }
149
- < button id = " reset" onClick = { this . resetBoard } >
128
+ < button id = ' reset' onClick = { this . resetBoard } >
150
129
Reset
151
130
</ button >
152
131
</ div >
0 commit comments