728x90
๋ฆฌ์กํธ ๊ฐ์๋ฐ์๋ณด ๊ฒ์
Box 2๊ฐ ๋ง๋ค๊ธฐ(๋ ๋ฒ์ , ์ปดํจํฐ ๋ฒ์ )
src ์๋์ component ํด๋ ๋ง๋ค๊ณ Box.js ๋ง๋ค์ด์ค
์ปดํฌ๋ํธ ์์ฑ ๋จ์ถํค :
- ์ปดํฌ๋ํธ ๋ง๋๋ ๋จ์ถํค : rafce
- ๋จ์ถํค๊ฐ ์๋์ฌ ๊ฒฝ์ฐ ์ค์น extention
- ์ปดํฌ๋ํธ ๋ง๋ค์ ์ฃผ์์ฌํญ:
- ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์
๋ฆฌ์กํธ๊ฐ ์ปดํฌ๋ํธ์ ์ผ๋ฐ HTMLํ๊ทธ(<div>,<p>๋ฑ..)์ ๊ตฌ๋ณํ๋ ๋ฐฉ๋ฒ์ ํ๊ทธ๊ฐ ๋๋ฌธ์๋ก ์์ํ๋์ง ์ฌ๋ถ์ด๋ค ๋ฐ๋ผ์ ์๋ฌธ์๋ก ์์์ ํ๋ฉด ์ผ๋ฐ HTMLํ๊ทธ๋ก ๋ถ๋ฅํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก!
- ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์
App.js / Box.js / App.css ์ฝ๋
(1) ์ ์ ๊ฐ ์ ํํ ์ ์๋ ๊ฐ์, ๋ฐ์, ๋ณด ๋ฒํผ
(2) ์ ์ ๊ฐ ์ ํํ ๊ฐ์, ๋ฐ์, ๋ณด ์ด๋ฏธ์ง๊ฐ ๋ณด์ฌ์ง๋ UI ์ธํ
(3) ์ปดํจํฐ ์ถ๋ ฅ ๊ฐ์, ๋ฐ์, ๋ณด ์ด๋ฏธ์ง๊ฐ ์ ์ ํด๋ฆญํ ๋๋ง๋ค ๋๋คํ๊ฒ UI ์ธํ
App.js
import { useState } from 'react';
import Box from "./component/Box";
import './App.css'
const chioce = {
rock: {
name: 'Rock',
img: "https://us.123rf.com/450wm/grgroup/grgroup1705/grgroup170505604/78932529-%EB%B0%94%EC%9C%84-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98%EC%9D%98-%EB%8D%A9%EC%96%B4%EB%A6%AC%EC%99%80-%EC%BB%AC%EB%9F%AC-%EB%B0%B0%EA%B2%BD.jpg",
},
scissors: {
name: 'Scissors',
img: "https://static.vecteezy.com/system/resources/previews/003/240/783/original/scissor-illustration-in-flat-design-vector.jpg",
},
paper: {
name: 'Paper',
img: "https://llllline.com/images/thumbs/0000017701_hand-palm-graphic-ai-vector_800.jpeg",
},
}
function App() {
const [userSelect, setUserSelect] = useState(null);
const [computerSelect, setcomputerSelect] = useState(null);
const play = (userChoice) => {
setUserSelect(chioce[userChoice]);
let computerChoice = randomChoice();
setcomputerSelect(computerChoice);
}
const randomChoice = () => {
let itemArray = Object.keys(chioce); //๊ฐ์ฒด์ ํค๊ฐ๋ง ๋ฝ์์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๋ ํจ์
let randomItem = Math.floor(Math.random() * itemArray.length);
let final = itemArray[randomItem];
return chioce[final];
}
return (
<div>
<div className='main'>
<Box title="You" item={userSelect} />
<Box title="Computer" item={computerSelect} />
</div>
<div className='main'>
<button onClick={() => play('scissors')}>๊ฐ์</button>
<button onClick={() => play('rock')}>๋ฐ์</button>
<button onClick={() => play('paper')}>๋ณด</button>
</div>
</div>
);
}
export default App;
Box.js
import { React } from 'react';
function Box(props) {
return (
<div>
<div className='box'>
<h1>{props.title}</h1>
<img className="item-img" src={props.item && props.item.img}></img>
</div>
<div><h1>Win</h1></div>;
</div>
);
}
export default Box;
App.js
.box {
border: 1px solid black;
width: 500px;
height: 500px;
}
.item-img {
width: 400px;
}
.main {
display: flex;
justify-content: center;
}
์น์ ๊ฐ๋ฆฌ๊ธฐ
App.js
import { useState } from 'react';
import Box from "./component/Box";
import './App.css'
const chioce = {
rock: {
number: 0,
name: 'Rock',
img: "https://us.123rf.com/450wm/grgroup/grgroup1705/grgroup170505604/78932529-%EB%B0%94%EC%9C%84-%EB%B2%A1%ED%84%B0-%EC%9D%BC%EB%9F%AC%EC%8A%A4%ED%8A%B8-%EB%A0%88%EC%9D%B4-%EC%85%98%EC%9D%98-%EB%8D%A9%EC%96%B4%EB%A6%AC%EC%99%80-%EC%BB%AC%EB%9F%AC-%EB%B0%B0%EA%B2%BD.jpg",
},
scissors: {
number: 1,
name: 'Scissors',
img: "https://static.vecteezy.com/system/resources/previews/003/240/783/original/scissor-illustration-in-flat-design-vector.jpg",
},
paper: {
number: 2,
name: 'Paper',
img: "https://llllline.com/images/thumbs/0000017701_hand-palm-graphic-ai-vector_800.jpeg",
},
}
function App() {
const [userSelect, setUserSelect] = useState(null);
const [computerSelect, setcomputerSelect] = useState(null);
const [result, setResult] = useState("");
const [computerResult, setComputerResult] = useState("");
const play = (userChoice) => {
setUserSelect(chioce[userChoice]);
let computerChoice = randomChoice();
setcomputerSelect(computerChoice);
setResult(judgement(chioce[userChoice], computerChoice));
setComputerResult(computerJudgement(chioce[userChoice], computerChoice));
}
const judgement = (user, computer) => {
if (user.number == computer.number) {
return "Tie";
} return user.number > computer.number ? "Win" : "Lose";
}
const computerJudgement = (user, computer) => {
if (user.number == computer.number) {
return "Tie";
} return user.number > computer.number ? "Lose" : "Win";
}
const randomChoice = () => {
let itemArray = Object.keys(chioce); //๊ฐ์ฒด์ ํค๊ฐ๋ง ๋ฝ์์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๋ ํจ์
let randomItem = Math.floor(Math.random() * itemArray.length);
let final = itemArray[randomItem];
return chioce[final];
}
return (
<div>
<div className='main'>
<Box title="You" item={userSelect} result={result} />
<Box title="Computer" item={computerSelect} result={computerResult} />
</div>
<div className='main'>
<button onClick={() => play('scissors')}>๊ฐ์</button>
<button onClick={() => play('rock')}>๋ฐ์</button>
<button onClick={() => play('paper')}>๋ณด</button>
</div>
</div>
);
}
export default App;
Box.js
import { React } from 'react';
function Box(props) {
return (
<div>
<div className='box'>
<h1>{props.title}</h1>
<img className="item-img" src={props.item && props.item.img}></img>
</div>
<div><h1>{props.result}</h1></div>;
</div>
);
}
export default Box;
728x90