import { useGame, version, calculateMazeScore } from "../../src"; import { useKeyBindings } from "./useKeyBindings"; import { useIsMobile } from "./useIsMobile"; import { useMemo } from "react"; import '../../src/game.css'; function App() { const isMobile = useIsMobile(); const cols = isMobile ? 12 : 32; const rows = isMobile ? 8 : 24; const gameManager = useGame({ cols, rows }, useKeyBindings); const { containerRef, gameStatus, scoreManager } = gameManager; const { timeValue, keystrokes, optimalSteps, efficiency } = scoreManager; const mazeSize = rows * cols; const finalScore = useMemo( () => gameStatus === "game-won" ? calculateMazeScore(scoreManager, mazeSize) : null, [gameStatus, scoreManager, mazeSize] ); const formatTime = (ms: number) => { const seconds = Math.floor(ms / 1000); const minutes = Math.floor(seconds / 60); const secs = seconds % 60; return `${minutes}:${secs.toString().padStart(2, '0')}`; }; return (
Press space to start
} {gameStatus === "started" &&Use hjkl to change direction • Press q to quit
} {gameStatus === "has-key" &&Use hjkl to change direction • Press q to quit
} {gameStatus === "game-over" &&Game Over! Press space to restart
} {gameStatus === "game-won" &&You Won! Press space to play again
}