feat: implement scoring system and win condition (Phase 50)

- Add useTimer hook for elapsed time tracking
- Add useScore hook with comprehensive metrics:
  - Total keystrokes (all keys)
  - Edit keystrokes (only editing keys)
  - Optimal keystrokes (empty cells × 3)
  - Efficiency percentage (optimal/edit × 100)
  - Final score (70% efficiency + 30% time-based)
- Win condition detects board completion only in normal mode
- Track all keystrokes with timestamps in useGame
- Update example app with full scoreboard display
- Expose boardRef in BoardManager for state checking
- Adjust easy mode to 5 removed cells for testing
This commit is contained in:
2025-10-22 20:42:50 +01:00
parent 710ec4b83b
commit 8db4455dc5
11 changed files with 339 additions and 25 deletions
-4
View File
@@ -56,11 +56,7 @@ export function useBoard() {
return {
containerRef,
generatorRef,
rendererRef,
boardRef,
solutionRef,
initialBoardRef,
boardRendered,
generateBoard,
renderBoard,