From 8c79fafa669e8fd1692513e980b654bacac93c90 Mon Sep 17 00:00:00 2001 From: Kahalia Stanberry Date: Fri, 15 Sep 2017 13:13:55 -0400 Subject: [PATCH 1/2] First Commit --- react-fb-tictactoe/src/TicTacToe/index.js | 37 +++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/react-fb-tictactoe/src/TicTacToe/index.js b/react-fb-tictactoe/src/TicTacToe/index.js index 56944d57..518c67f9 100644 --- a/react-fb-tictactoe/src/TicTacToe/index.js +++ b/react-fb-tictactoe/src/TicTacToe/index.js @@ -10,18 +10,49 @@ import './TicTacToe.css' * class Square extends Component */ class Square extends Component { + constructor() { + + super(); + this.state ={ + + valuse: null, + }; + } + + render() { return ( - ); } } class Board extends Component { + + constructor() { + super(); + this.state = { + squares: Array(9).fill(null), + }; + } + + handleClick(i) { + + const squares = this.state.squares.slice(); + squares[i] ='X'; + this.setState({squares:squares}); + } + renderSquare(i) { - return ; + return( + this.handleClick(i)} + /> + ); + } render() { From 82733d234ec0897c924a35fe0cbabe3c568d9575 Mon Sep 17 00:00:00 2001 From: Kahalia Stanberry Date: Fri, 15 Sep 2017 15:12:39 -0400 Subject: [PATCH 2/2] Commit to Git --- react-fb-tictactoe/src/TicTacToe/index.js | 124 ++++++++++++++++------ 1 file changed, 94 insertions(+), 30 deletions(-) diff --git a/react-fb-tictactoe/src/TicTacToe/index.js b/react-fb-tictactoe/src/TicTacToe/index.js index 518c67f9..1b858028 100644 --- a/react-fb-tictactoe/src/TicTacToe/index.js +++ b/react-fb-tictactoe/src/TicTacToe/index.js @@ -9,58 +9,67 @@ import './TicTacToe.css' * with * class Square extends Component */ -class Square extends Component { - constructor() { +function Square(props){ - super(); - this.state ={ + return( - valuse: null, - }; - } + - ); - } + + ); } class Board extends Component { - constructor() { - super(); - this.state = { - squares: Array(9).fill(null), - }; - } - handleClick(i) { - const squares = this.state.squares.slice(); - squares[i] ='X'; - this.setState({squares:squares}); + 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( this.handleClick(i)} + value ={this.props.squares[i]} + onClick ={() => 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)} @@ -81,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 */}