「積木數量謎題」的答案是計算被佔用的 x、y、z 座標數量,而不是計算可見的面或頂端菱形數量,因為等角堆疊中的某些方塊繪製時沒有任何面,卻仍佔據著支撐柱內部的位置,必須計入總數中。在「數方塊謎題」中,攝影機朝向正 x、正 y、正 z 三個方向,渲染器會檢查每個方塊在這三個方向上的鄰接格子位置。只有當正上方座標為空時才繪製頂面,當正 x 方向的鄰格為空時繪製其中一個側面,當正 y 方向的鄰格為空時繪製另一個側面。只有當這三個鄰接位置全都被佔用時,方塊才會完全隱藏,這就是為什麼掃描每個 z 層的填滿格子,即使等角表面在某些內部方塊上完全沒有顯示任何東西,仍能得到正確總數的原因。每個場景會出現四個數字選項,選到正確答案可得 200 分,連續五次選對即可達到滿分 1,000 分。

等角繪圖顯示了什麼、省略了什麼
數方塊謎題中可見的影像只是更大方塊結構的表面。每個方塊位於整數格點上,以一個座標表示為 x、y、z,其中 x 與 y 值定位其在地面上的欄位,z 則表示其高度。因為 z 零以上的每個座標正下方都有對應的座標,堆疊中不會出現懸浮的方塊;每個方塊都位於另一個方塊之上或位於地平面上。
渲染器對每個方塊套用三項獨立的檢查。如果正上方的格子為空,就繪製頂面。如果正 x 方向的鄰格為空,就繪製其中一個側面。如果正 y 方向的鄰格為空,就繪製另一個側面。這些檢查之間互不影響,因此單一方塊可能顯示一個、兩個或三個面,取決於哪些方向是開放的。一個高柱即使包含五個堆疊的方塊,頂端也只會有一個菱形,這正是隨意計數者最容易出錯的第一個地方。
隱藏方塊背後的三面規則
當方塊三個朝向攝影機的鄰格同時都被佔用時,該方塊就會從繪圖中完全消失。單一鄰接方塊不足以隱藏整個方塊,兩個鄰接方塊也同樣不足。如果三個朝向攝影機的方向中有任何一個是開放的,就至少會保留一個可見面。只有三個鄰格都被佔用的情況,才會使該方塊從渲染表面上消失。
| 正 x 鄰格 | 正 y 鄰格 | 正 z 鄰格 | 繪製的面 |
|---|---|---|---|
| 空 | 空 | 空 | 三個面(頂面、x 側面、y 側面) |
| 空 | 空 | 已佔用 | 兩個面(x 側面、y 側面) |
| 已佔用 | 已佔用 | 空 | 一個面(僅頂面) |
| 已佔用 | 已佔用 | 已佔用 | 零個面 — 方塊完全隱藏 |
這個面的規則避免了一種常見的計數錯誤:單一陰影側面或單一共用頂面並不表示方塊從堆疊中缺少。只有當你完全看不到任何面時,該方塊才算是缺少。被遮住的面僅從 SVG 中省略,但隱藏的方塊仍是實際堆疊的一部分。
如何從下到上讀取層掃描器
解題的實用方法是將等角表面與下方的層掃描器結合運用。掃描器將堆疊由下到上分成水平的 z 切片。每個填滿的掃描器格子代表該層中一個被佔用的 x 與 y 座標,包括在等角視圖中沒有可見面的方塊。
二維投影的常數永遠不會改變方塊數量。遊戲以螢幕 x 等於 150 加 30 乘 x 減 y,螢幕 y 等於 80 加 17 乘 x 加 y 減 34 乘 z 來繪製方塊。這些常數只控制每個面在畫布上的繪製位置,絕不會改變實際的方塊集合,因此在計數時可以放心忽略。
- 開啟等角堆疊下方的層掃描器,並從可見的頂面、x 側面與 y 側面辨識攝影機方向。
- 由下到上讀取各 z 層。每層都是一個由 x 與 y 座標組成的二維網格。
- 將每個填滿的掃描器格子標記為該高度上的一個已佔用 x 與 y 配對,包括對應於等角視圖中沒有任何可見面的方塊之格子。
- 計算第一層的填滿格子,並在所有後續層中持續累計。
- 最後將累計數字相加。最終數字即為堆疊中已佔用格點座標的數量。
- 從該回合提供的四個純數字總額中選出相符的值。
空的掃描器格子保留了底面輪廓的對齊關係,卻不會貢獻方塊,因此不要將其計入總額。逐層閱讀正是讓計數結果對隱藏方塊具有強健性的原因:即使等角表面在某個區域完全沒有顯示東西,該區域中一個填滿的掃描器格子仍代表該高度上存在一個方塊。
解題範例:含一個隱藏方塊的 2x2 堆疊
考慮一個 2x2 的底面,其四個欄位高度分別為 2、2、1 與 1。各欄位高度相加即可直接得到方塊總數:2 + 2 + 1 + 1 = 6 個方塊。
位於 (0, 0, 0) 的最下方方塊就是隱藏的那一個。其正 x 方向的鄰格 (1, 0, 0) 因該欄高度為 2 而被佔用,其正 y 方向的鄰格 (0, 1, 0) 因該欄高度為 1 而被佔用,其正 z 方向的鄰格 (0, 0, 1) 因該欄高度為 2 而被佔用。三個朝向攝影機的鄰格全都已被佔用,因此渲染器省略該方塊的所有面,使它在等角繪圖中完全不見。該回合提供的四個數字選項中,6 將作為唯一相符的總額。
如果你只計算頂端菱形,你會看到每欄一個頂面並回報 4 個方塊。如果你計算可見面,則會高估,因為單一方塊可能貢獻多個面,而隱藏方塊則完全不貢獻任何面。層掃描器能夠抓到缺少的方塊,因為底部層的 (0, 0) 格子在 z = 0 處為填滿,而等角繪圖在該座標上沒有顯示任何面。
從四個數字選項中選出正確總額
每個回合顯示一個原始等角堆疊與四個純數字選項。場景中並未儲存任何具名答案、總額、可見計數、隱藏計數、語意正確標記或結果資料屬性。四個選項僅為純數字,引擎會獨立計算實際的方塊清單以找出唯一相符的選項。選到該選項可得 200 分,並立即顯示下一個堆疊。
五個場景依序從一個緊湊的 2x2 平台推進到隆起的稜線、加冕的底面、對角塔樓與寬廣的隱藏露台。每個場景都採用透明幾何,而不是手動標註的答案旗標,且已發布的投影說明加上完整的層掃描,使每個已佔用座標皆可在引擎不印出最終總和的情況下被稽核。
計分、修復與滿分 1,000 分的連勝
| 動作 | 對分數與狀態的影響 |
|---|---|
| 首次即選到相符總額 | +200 分,進入下一場景 |
| 選到錯誤總額,再次選到同一錯誤總額 | 去重處理;相同的第二次選取不再消耗另一次失誤 |
| 選到一個錯誤總額,接著在同一場景選到正確總額 | 失敗紀錄在進入下一場景前清除;不會污染後續回合 |
| 選到第二個真正不同的錯誤總額 | 連勝鎖定;僅剩「重新開始」可用 |
| 以精確總額完成五個場景 | 最終分數正好為 1,000 分 |
| 隨時按下「重新開始」 | 場景回到完全相同的初始狀態 |
滑鼠指標與觸控輸入會從四個原生答案按鈕中選取一個,其點擊目標高度超過 44 像素。鍵盤操作首先聚焦於某個選項;方向鍵在 2x2 的選項網格中移動,真正的 DOM 焦點會跟隨可見游標。Enter 或 Space 透過功能式更新選取目前狀態游標,以避免快速瀏覽後出現過時答案。當連勝結束或陷入僵局時,所有答案都會停用,而「重新開始」仍透過共用的 GameShell 保持可用。
常見的計數錯誤及其失敗原因
最常見的錯誤答案是外框方塊頂面的數量。高柱不論包含多少方塊,都只有一個頂端菱形,因此只計算頂端菱形會回報欄位數而非方塊數量。次常見的錯誤是計算可見面。單一方塊可能貢獻一個頂面與兩個側面,另一個可能只貢獻一個側面,而完全隱藏的方塊則完全不貢獻任何多邊形,因此可見面的計數不等於方塊數量。
關於更深入的策略,請參閱配套攻略 如何解開含隱藏方塊的數方塊謎題,該文以相同的三面規則為基礎,並加入更多練習場景。在任何情況下,正確的數量皆為已佔用格點座標的數量,等同於所有完整欄位高度的總和,這正是層掃描器逐格所回報的內容。