Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,14 @@
- UI/操作の決定は README に記録する。
- テストは手動チェックリストから始める。

## 調整中パラメータ
- 詰みチェック(簡易ソルバ): LIMIT=1000, noProgressLoop=200, checkCurrentState のリトライ=13
- 体感: noProgressLoop=200 は作業感が強く爽快感がない。50 は爽快感があった。
- 体感: noProgressLoop=100 はぎりぎり楽しめるレベル。
- 体感: 問題作成の noProgressLoop=13 はライトなゲームとして限界。
- 今日のゴール設定: SOLVER_STALL_DEAL=12, SOLVER_STALL_CHECK=200。
- 知見: 数字(試行回数・停滞許容量)を増やすと作業感が増えて爽快感が減る。
- 体感: SOLVER_STALL_DEAL=13 がいちばんゲームバランス良さそう。

## 未確定事項
- リサイクル条件、詰み判定の厳密さ
8 changes: 7 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,16 @@
- Undo 用に履歴スタックを保持する。
- Restart 用に初期状態を保持する。

## 用語
- Tableau: 場札。7列のカード配置で、プレイの主な操作対象。
- Foundations: 組札。各スートごとの完成先。
- Stock: 山札。ドロー元の未公開カードスタック。
- Waste: 捨て札。Stock から引いたカードの置き場。

## UI 層
- カード: CardMeister の `<playing-card>` を使用。
- レイアウト: CSS で Tableau / Foundations / Stock / Waste を配置。
- 入力: 左クリックで通常移動、ダブルクリックで組札移動を優先(右クリックは山札の移動操作のみ)。
- 入力: 左クリックで通常移動、長押しで組札移動を優先(場札トップ/捨て札トップ)。右クリックは山札の移動操作のみ(Stock のみ)。
- 勝利演出: オーバーレイを表示。
- 補助UI: Undo/Restart/New Game/Solvability Check のコントロールを表示。
- ヘッダー: バージョン表記と GitHub リンクを表示。
Expand Down
7 changes: 6 additions & 1 deletion GameLogic.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
* `Stock` が空かつリサイクル可能: `Waste` の全カードを逆順にして `Stock` へ戻す (`isOpen = false`)。

### 4.2 カード移動後の自動処理 (Auto-Refresh)
* 移動によって `Tableau[i]` の最後尾が `isOpen == false` になった場合、即座に `isOpen = true` に変更する。
* 移動によって `Tableau[i]` の最後尾が `isOpen == false` になった場合、`isOpen = true` に変更する。
* アニメ版 UI では演出完了後にめくる(内部状態の更新は同一)。

### 4.3 自動完了 (Auto-Finish / シュババ)
* 全 `Tableau` カードが `isOpen == true` であり、かつ `Stock` と `Waste` が空の場合、以下のループを許容する:
Expand All @@ -66,6 +67,10 @@
* 自動移動は安全判定を満たす場合のみ実施する(A は即許可)。
* 安全判定: 対象カードの一つ下のランクが、反対色の基礎山で両方とも成立済みであること。

### 4.5 ヒント (Hint)
* 簡易ソルバと同じ優先順位で次の一手を探索し、1回だけ自動実行する。
* 優先順: Tableau→Foundation, Waste→Foundation, Tableau→Tableau, Waste→Tableau, Draw/Recycle。

---

## 5. 終了判定
Expand Down
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
# Klondike (Static Web App)

ブラウザで動くクロンダイク(ソリティア)を単一 HTML で動作する静的 Web アプリとして作るプロジェクト。
Play Klondike (Solitaire) in the browser — a static web app contained in a single HTML file.
ブラウザで遊べるクロンダイク(ソリティア)。単一 HTML で完結する静的 Web アプリ。

![Screenshot](screenshot-20260121.png)

Current Version: v20260124

## 目的
- 1ファイル(単一 HTML)完結の静的 Web アプリとして公開できる形にする。
- ルールは `GameLogic.md` に準拠する。

## 仕様メモ
- ドローは 1 枚固定(Draw 1)。
- クリック操作が中心(左クリックで場札移動、ダブルクリックは組札移動のみ。右クリックは山札の移動操作のみ)
- 操作: 左クリックで場札移動(移動先が無い場合のみ組札へフォールバック)。長押し(350ms)で組札へ強制移動(場札トップ/捨て札トップ)。右クリックは山札の移動操作のみ
- オート移動は遅延付き(安全判定あり)。
- 勝利時はオーバーレイで表示する。
- Undo/Restart を実装済み(Ctrl/Cmd+Z、ボタンあり)。
- New Game ボタンで詰まりにくい初期配置を生成する。
- `index.html` はアニメ版で Test ボタンがあり、連鎖アニメ用のテストデッキを生成する。
- `index-noanime.html` は非アニメ版。
- 「Solvability Check」トグルで詰まり判定を行い、警告を表示する。
- Hint ボタンで簡易ソルバの次の一手を 1 回だけ自動実行する。
- ヘッダーにバージョン表記と GitHub リンクを表示する。
- 採用ライブラリ: CardMeister(Unlicense)。
- 採用ライブラリ: CardMeister(Unlicense)、Motion One(MIT, アニメ版のみ)
- デバッグログは当面残す。

## ディレクトリ
- `GameLogic.md`: ゲームロジック仕様
- `AGENTS.md`: 開発時の合意事項・方針
- `index.html`: アニメ版(Motion One / Test ボタンあり)
- `index-noanime.html`: 非アニメ版

## 次に決めたいこと
- リサイクル条件、詰み判定の厳密さ
2 changes: 2 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@

- [x] Undo は必要になった段階で履歴スタックを追加する。
- [x] Tableau の A をクリックしても反応せず、列の一番下カードのクリックでのみ処理される問題を調査する。
- [ ] 問題のあったデータのデバッグのために、データのJSONを入力に場面再現する機能を追加する。
- [ ] アニメ版/非アニメ版の手動チェックリストを整備する。
Loading