🍀Github 링크: https://github.com/Park-Yuyeong/challenge-class/tree/main/assignments/02assignment/pikachu
React를 사용하여 구현해야 합니다.grass.png 하나가 가로, 세로 1칸 크기를 나타내도록 구현해야 합니다.pikachu.png 하나가 가로, 세로 1칸 크기에 해당하도록 구현해야 합니다.
const [position, setPosition] = useState({ x: 0, y: 0 }); // 피카츄 위치
const [direction, setDirection] = useState(1); // 피카츄가 바라보는 방향 (1: 오른쪽 / -1: 왼쪽)
const [isJumping, setIsJumping] = useState(false); // 피카츄는 점핑중인가?
// 피카츄 움직이기
const movePikachu = (e) => { // onKeyDown 이벤트 핸들러
const { y, x } = position;
switch (e.key) {
case "ArrowUp": // 위로
setPosition({ y, x: x - 80 >= 0 ? x - 80 : x });
break;
case "ArrowDown": // 아래로
setPosition({ y, x: x + 80 < 800 ? x + 80 : x });
break;
case "ArrowLeft": // 왼쪽으로
setPosition({ y: y - 80 >= 0 ? y - 80 : y, x });
setDirection(-1);
break;
case "ArrowRight": // 오른쪽으로
setPosition({ y: y + 80 < 800 ? y + 80 : y, x });
setDirection(1);
break;
case " ": // 점프
if (isJumping === false) {
setPosition({ y, x: x - 30 });
setIsJumping(true);
setTimeout(() => {
setPosition({ y, x });
setIsJumping(false);
}, 100);
}
break;
}
};
useState를 이용하여 간단하게 구현가능하다!