Цитата:
|
Примерно так...
<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, время: 22:14. |