스도쿠 (Sudoku)
스도쿠는 레벨이 올라갈수록 단서가 줄어드는 방식으로 설계된 숫자 퍼즐입니다. 4x4 입문형부터 9x9 고난도까지 순차 진행하며, 각 레벨 클리어 점수가 누적되어 최종 랭킹 점수가 됩니다.
난이도(레벨) 구성
- 총 10레벨이며
levels로 정의됩니다. - 레벨 1:
4x4(박스 2x2, reveal 0.7) - 레벨 2:
6x6(박스 2x3, reveal 0.6) -
레벨 3~10:
9x9(박스 3x3), reveal 값이 0.6 → 0.2로 감소 -
reveal이 낮을수록 빈칸이 늘어나 난이도가 올라갑니다
(
holes = total * (1 - reveal)).
퍼즐 생성과 판정
-
정답판(
solution)은 백트래킹 (solve())으로 생성됩니다. -
숫자 배치 가능 여부는 행/열/박스 중복 검사
(
check())로 판정합니다. -
정답판을 복제해 문제판(
board)을 만들고, 무작위 칸을 0으로 비워 퍼즐을 구성합니다. -
처음부터 채워진 칸은
fixed로 잠겨 수정할 수 없습니다.
조작 방법
- 셀 클릭으로 선택 후 입력합니다. 고정 셀은 선택되지 않습니다.
-
키보드 숫자(0~9),
Backspace,Delete를 지원합니다. - 방향키(상하좌우)로 선택 셀 이동이 가능합니다.
-
하단 넘버패드에서 숫자 또는
CLR(0) 입력도 지원합니다.
오답 표시와 클리어
-
입력값이 정답과 다르면 해당 셀에
error클래스를 부여해 시각적으로 표시합니다. - 전체 보드가 정답판과 일치하면 클리어이며 타이머를 멈춥니다.
- 10레벨 전에는 레벨 클리어 모달이 뜨고, 랭킹 등록 후 종료하거나 다음 단계로 계속 진행할 수 있습니다.
- 10레벨 클리어 시 MASTER CLEAR 모달이 뜹니다.
점수 계산과 랭킹
-
레벨 점수:
baseScore = currentLevel * 1000 -
시간 보너스:
timeBonus = max(0, currentLevel * 300 - timeElapsed * 10) -
레벨 클리어 시
totalScore += baseScore + timeBonus로 누적됩니다. -
랭킹 저장은
saveGameScore("sudoku", nickname, totalScore)를 사용하며 닉네임은 최소 2자입니다.
플레이 팁
- 초중반(4x4, 6x6)은 후보 숫자 좁히는 연습 구간으로 활용하면 9x9가 수월해집니다.
- 오답 표시가 뜬 칸은 바로 수정해 충돌 누적을 줄이는 편이 좋습니다.
- 시간 보너스 비중이 커서, 막히는 구간에서는 무작위 입력보다 확정 가능한 행/열부터 푸는 것이 유리합니다.