2026-05-07開發日誌
- 日期:2026-05-07
- 專案:Cá xấu Duckduck
今日總結
完成 power_puzzle 的格局最終定版、元件對齊、duckduck 通電邏輯修正,以及通關後場景切換的完整流程。
格線修正:8×9 → 9×9
原本 GRID_COLS = 8,改為 9,補足最後一欄,讓格線成為完美正方形。
同時修正水平置中:原本 _grid_offset.x = 0(靠左),改為:
gdscript
_grid_offset.x = (box.size.x - (tile_size * COLS + (COLS-1) * GAP)) * 0.5加上 * 0.88 縮小整體格線,避免元件超出邊框。垂直向上偏移 -30.0 微調位置。
最終格局定版
格局為 9×9,以下是 level_map 各 type 分布:
-1 -1 -1 -1 -1 -1 3 0 -1 row 0
-1 -1 -1 -1 -1 -1 2 2 -1 row 1
-1 -1 0 3 2 -1 2 2 -1 row 2
3 3 -1 1 3 1 3 -1 -1 row 3
0 1 2 3 -1 -1 1 2 0 row 4
2 2 4 -1 -1 -1 2 3 -1 row 5
2 4 5 4 -1 -1 0 1 -1 row 6
1 1 4 -1 -1 -1 1 1 -1 row 7
0 2 -1 -1 -1 -1 3 2 -1 row 8| type | 說明 |
|---|---|
| -1 | 隨機填充(每次進場隨機 type 1 或 2,隨機旋轉,不計入解答) |
| 0 | duckduck(固定) |
| 1 | 直管 |
| 2 | 轉角 |
| 3 | T 型 |
| 4 | 十字(固定全通) |
| 5 | 電源 power.png(固定全通,BFS 起點) |
電源位置:START_CELL = Vector2i(6, 2)
duckduck 修正
上下顛倒問題
所有 type=0 格子都被套用了 (sol_rot + 2) % 4 = 2(180°)的打亂邏輯。
修正:type=0 固定 init_rot = 0,不打亂。
通電時換圖
新增 _duck_sprites dict 追蹤所有 duckduck sprite。_update_flow() 結尾判斷:鄰居通電且開口朝向 duck → 顯示 duckducki.png,否則顯示 duckduck.png。
通關條件改寫
舊邏輯:所有可旋轉管件的 rotation == sol_rot
新邏輯:所有 duckduck 全部亮起(被接通)= 通關
在 _update_flow() 末尾追蹤 all_ducks_lit,全部亮則呼叫 _on_solved()。
移除舊的 _check_solution() 函式。
通關流程與場景銜接
_on_solved() 流程:
- 所有管件強制顯示通電貼圖
SaveManager.set_prop("power_puzzle_solved", 1)寫入存檔- 等待 2 秒後返回
chapter1_event2.tscn
chapter1_event2.gd 的 _ready() 加入判斷:
power_puzzle_solved == 1→ 換貼圖成scene2.PNG、停止閃爍、隱藏謎題按鈕- 未通關 → 維持原本閃爍邏輯
