00:00
数字を選んでマスを埋めてください

📋 このツールを作ったプロンプト

以下のプロンプトをClaude・ChatGPT・GeminiなどのAIに貼り付けると、同じようなツールを作ることができます。

ブラウザで動く数独ゲームをHTML単一ファイル(HTML/CSS/JS完結)で実装してください。

【パズル生成】
- バックトラッキングで完成盤面(solution)を生成する
- 難易度に応じて穴の数を変える(易:35 / 普通:47 / 難:56)
- 穴を開ける際は countSolutions() で唯一解チェックを行い、2解以上になるマスは戻す

【盤面データ構造】
- puzzle[81]    : 初期配置(0=空白)
- solution[81]  : 正解盤面
- fixed[81]     : 初期配置マスの固定フラグ(Boolean)
- userInput[81] : ユーザー入力値(null or 1-9)
- memoData[81]  : Set オブジェクトの配列(候補メモ)

【入力・操作】
- マスクリックで selected インデックスを更新し再描画する
- 数字パレットボタンとキーボード(1-9 / Backspace / Delete / 矢印キー)で入力できる
- メモモード ON 時は userInput ではなく memoData[idx] の Set を更新する
- 数値確定時は同行・同列・同3×3ブロックの memoData から該当数字を削除する

【バリデーション】
- isValid(board, idx, num) : 行・列・3×3ブロックに同じ数字がないか確認する
- 誤入力マスは .wrong クラスを付与して赤色表示する
- 選択中マスと同じ数字のマスは .highlight クラスでハイライトする

【ヒント】
- solution と異なる未入力・誤入力マスから1つランダムに選び正解値を入れる
- 対象マスに .hint-flash アニメーション(CSS @keyframes)を適用する

【クリア判定・演出】
- 全81マスが solution と一致したらクリアと判定しタイマーを停止する
- 各マスに setTimeout(fn, i * 8ms) で順次 .clear-anim クラスを付与し波状アニメーションを表示する

【タイマー】
- setInterval 1000ms で timerSec をインクリメントし MM:SS 形式で表示する
- 新しいゲーム開始時にリセット・再開する

【スタイル】
- display:grid / grid-template-columns: repeat(9, 1fr) で盤面を構成する
- nth-child セレクタで3×3ブロック境界の border を太くする
- スマートフォン対応のため数字パレット(1-9 + 消去ボタン)を盤面下に配置する

【制約】
- 外部ライブラリ不使用
- HTML/CSS/JS をすべて1ファイルに収める
- グローバル汚染防止のため即時関数(IIFE)で全体を囲む