From 4615ca9b8b1989d315ae2322556697b97161b97b Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 17 Sep 2025 19:08:58 +0900 Subject: feat(frontend): apply effect for high score --- frontend/app/components/Gaming/Score.tsx | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 frontend/app/components/Gaming/Score.tsx (limited to 'frontend/app/components/Gaming/Score.tsx') diff --git a/frontend/app/components/Gaming/Score.tsx b/frontend/app/components/Gaming/Score.tsx new file mode 100644 index 0000000..9b6283f --- /dev/null +++ b/frontend/app/components/Gaming/Score.tsx @@ -0,0 +1,38 @@ +import { useEffect, useState } from "react"; + +type Props = { + status: string | null; + score: number | null; +}; + +export default function Score({ status, score }: Props) { + const [displayScore, setDisplayScore] = useState(score); + + useEffect(() => { + let intervalId = null; + + if (status === "running") { + intervalId = setInterval(() => { + const maxValue = Math.pow(10, String(score).length) - 1; + const minValue = Math.pow(10, String(score).length - 1); + const randomValue = + Math.floor(Math.random() * (maxValue - minValue + 1)) + minValue; + setDisplayScore(randomValue); + }, 50); + } else { + setDisplayScore(score); + } + + return () => { + if (intervalId) { + clearInterval(intervalId); + } + }; + }, [status, score]); + + return ( + + {displayScore} + + ); +} -- cgit v1.2.3-70-g09d2