diff --git a/react-fb-tictactoe/src/TicTacToe/index.js b/react-fb-tictactoe/src/TicTacToe/index.js index 56944d57..1b858028 100644 --- a/react-fb-tictactoe/src/TicTacToe/index.js +++ b/react-fb-tictactoe/src/TicTacToe/index.js @@ -9,27 +9,67 @@ import './TicTacToe.css' * with * class Square extends Component */ -class Square extends Component { - render() { - return ( - - ); - } +function Square(props){ + + return( + + + ); } class Board extends Component { + + handleClick(i) { + + const history = this.state.history; + const current = history[history.length - 1]; + const squares = current.squares.slice(); + + if (calculateWinner(squares) || squares[i]){ + return; //what the heck does this mean? didnt know it was possible. + } + + + squares[i] = this.state.xIsNext ? 'X' : 'O'; + this.setState({ + history: history.concat([{ + squares: squares, + }]), + + xIsNext: !this.state.xIsNext, + + }); + } + renderSquare(i) { - return ; + return( + this.props.onClick(i)} + /> + ); + } render() { - const status = 'Next player: X'; + const winner = calculateWinner(this.squares); + + let status; + + if (winner){ + status ='Winner: '+ winner; + } + else{ + + status ='Next player: ' +(this.state.xIsNext ? 'X' :'O'); + } return (
-
{status}
{this.renderSquare(0)} {this.renderSquare(1)} @@ -50,15 +90,70 @@ class Board extends Component { } } +function calculateWinner(squares){ + + const lines =[ + + [0, 1, 2], + [3, 4, 5], + [6, 7, 8], + [0, 3, 6], + [1, 4, 7], + [2, 5, 8], + [0, 4, 8], + [2, 4, 6], + + ]; + + for (let i =0; i
- + this.handleClick(i)} + />
-
{/* status */}
+
{ status }
    {/* todo */}