Цитата:
|
Примерно так...
<html> <head> <title></title> <style type="text/css"> .cell{ height: 50px; width: 50px; background-color: #FFFF00; } .game > div { width: 250px; display: flex; flex-wrap: wrap; } </style> </head> <body> <div id="root"></div> <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script> <script type="text/babel"> const { createElement, Component } = React; class Game extends Component { state = { randomCell: null, greenCells: [] } duel = Array.from(new Array(25), (_, i) => i); setGreen = () => { this.setState({ randomCell: null, greenCells: this.state.greenCells.concat(this.state.randomCell) }); }; numRandom = () => { const randomCell = Math.floor(25 * Math.random()); this.setState({ randomCell }); }; render() { const { randomCell, greenCells } = this.state; return <div className="game"> <div> <button onClick={this.numRandom}>Play</button> </div> <div>{ this.duel.map(i => { const style = {}; if(greenCells.includes(i)) style.backgroundColor = "green"; if(randomCell === i) style.backgroundColor = "blue"; return <div className="cell" style={style} onClick={randomCell === i ? this.setGreen : null} ></div> }) }</div> </div> } } ReactDOM.render(<Game />, document.getElementById("root")) </script> </body> </html> |
Цитата:
|
Спасибо
|
react игрушка продолжение
:) :write:
сделай поле зелёным! <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .cell{ height: 50px; width: 50px; background-color: #FFFF00; } .game > div { width: 250px; display: flex; flex-wrap: wrap; } </style> </head> <body> <div id="root"></div> <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script> <script type="text/babel"> const { createElement, Component } = React; class Game extends Component { state = { randomCell: null, greenCells: new Set() } duel = Array.from(new Array(25), (_, i) => i); setGreen = () => { this.setState({ randomCell: null, greenCells: this.state.greenCells.add(this.state.randomCell) }); }; numRandom = () => { const {greenCells} = this.state; const freeCell = this.duel.filter(i => !greenCells.has(i)) const randomCell = freeCell[Math.floor(freeCell.length * Math.random())]; this.setState({ randomCell }); clearTimeout(this.timer); this.timer = setTimeout(this.numRandom, 1000); }; render() { const { randomCell, greenCells } = this.state; if(greenCells.size == this.duel.length) return <h1>Game over</h1>; return <div className="game"> <div> <button onClick={this.numRandom}>Play</button> </div> <div>{ this.duel.map(i => { const style = {}; if(greenCells.has(i)) style.backgroundColor = "green"; if(randomCell === i) style.backgroundColor = "blue"; return <div className="cell" style={style} onClick={randomCell === i ? this.setGreen : null} ></div> }) }</div> </div> } } ReactDOM.render(<Game />, document.getElementById("root")) </script> </body> </html> |
Шикарно. Спасибо Вам, великие Профессора.
|
import React from 'react' import './App.css' const CELL_COUNT = 25 function App() { const [cells] = React.useState(Array.from({ length: CELL_COUNT }, (_, i) => i)) const [randomCell, setRandomCell] = React.useState(null) const playClick = () => setRandomCell(parseInt(Math.random() * CELL_COUNT)) const greenClick = () => setRandomCell(null) return ( <div className="game"> <div> <button onClick={playClick}>Play</button> </div> <div> {cells.map((cell, idx) => <button key={cell} className={idx === randomCell ? 'cell random' : 'cell'} onClick={randomCell && greenClick} >{cell}</button>)} </div> </div> ) } export default App |
SuperZen,
Спасибо большущее |
Часовой пояс GMT +3, время: 10:56. |