import React from 'react'; import ReactDOM from 'react-dom/client'; import Typing from 'react-typing-animation'; import './index.css'; import logos from './BoSLOO logo.json'; function Square(props) { return ( ); } class Board extends React.Component { renderSquare(i) { return ( this.props.onClick(i)} /> ); } render() { return (
{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)}
); } } class Game extends React.Component { constructor(props) { super(props); this.state = { history: [{ squares: Array(9).fill(null), }], xIsNext: true, }; } handleClick(i) { const history = this.state.history; const current = history[history.length - 1]; const squares = current.squares.slice(); if (calculateWinner(squares) || squares[i]) { return; } squares[i] = (this.state.xIsNext ? 'X' : 'O'); this.setState({ history: history.concat([{ squares: squares, }]), xIsNext: !this.state.xIsNext, }); } render() { const history = this.state.history; const current = history[history.length - 1]; const winner = calculateWinner(current.squares); let status; if (winner) { status = 'Winner: ' + winner; } else { status = 'Next: ' + (this.state.xIsNext ? 'X' : 'O'); } return (
this.handleClick(i)} />
{status}
    {/* TODO */}
); } } 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; } class Terminal extends React.Component { constructor(props) { super(props); this.state = { lines: [ { text: 'BoSLOO v0.1', printed: false }, { text: 'Today is Saturday.', printed: false }, { text: logos.logo, printed: false} ] } } render() { var rawLines = []; var typingLines = []; for (let line of this.state.lines) { line.printed ? rawLines = rawLines.concat([line.text]) : typingLines = typingLines.concat([line.text]); } const raw = rawLines.join('\n'); const type = typingLines.join('\n'); return (
{raw} {type}
); } } // ======================================== const root = ReactDOM.createRoot(document.getElementById("root")); root.render();