import React from "react"; import ReactDOM from "react-dom/client"; import "./index.css"; // rename to index, then run npm start. /* ========================================================================== */ /* Square */ /* ========================================================================== */ // class Square2 extends React.Component { // constructor(props) { // // init a state. // super(props); // this.state = { // value: null, // }; // } // render() { // return ( // // ); // } // } // less code, less effort. function Square(props) { return ( ); } /* ========================================================================== */ /* board */ /* ========================================================================== */ class Board extends React.Component { constructor(props) { super(props); this.state = { squares: Array(9).fill(null), xIsNext: true, }; } handleClick(i) { // to update what to display in the little squres in The board. const squares = this.state.squares.slice(); // make a copy of squares array. if (calculateWinner(squares) || squares[i]) { return; } squares[i] = this.state.xIsNext ? "X" : "O"; // if true then x. else o this.setState({ squares: squares, xIsNext: !this.state.xIsNext, // flip~ now. }); } handleClick2() { // to update what to display in the little squres in The board. const squares = this.state.squares.slice(); // make a copy of squares array. this.setState({ squares: Array(9).fill(null), }); } renderSquare(i) { return ( this.handleClick(i)} /> ); } resetbutton() { return ; } render() { const winner = calculateWinner(this.state.squares); let status; if (winner) { status = "winner is: " + winner; } else { status = "Next player: " + (this.state.xIsNext ? "X" : "O"); } return (
{status}
{this.renderSquare(0)} {this.renderSquare(1)} {this.renderSquare(2)}
{this.renderSquare(3)} {this.renderSquare(4)} {this.renderSquare(5)}
{this.renderSquare(6)} {this.renderSquare(7)} {this.renderSquare(8)}
{this.resetbutton()}
); } } /* ========================================================================== */ /* cal winner who */ /* ========================================================================== */ 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 < lines.length; i++) { const [a, b, c] = lines[i]; if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) { return squares[a]; } } return null; } /* ========================================================================== */ /* game */ /* ========================================================================== */ class Game extends React.Component { render() { return (
{/* status */}
    {/* TODO */}
); } } // ======================================== const root = ReactDOM.createRoot(document.getElementById("root")); root.render();