// ============================================================ // 遊戲資料:故事文本、場景、線索、鎖具 // ============================================================ const STORY = { intro: `相傳明代嘉靖年間,江南有一位隱居的算學奇才,姓衛名九章,畢生鑽研「率數之學」—— 也就是後世所稱的「連比例」。他認為天地萬物,凡長寬高、輕重、遠近, 皆可用「連比」串聯其中奧秘,並將畢生心血寫成《九章算餘・率數卷》,藏於自家書房之中。 衛九章晚年深居簡出,在書房裡設下重重機關,聲稱唯有真正參透「連比」精髓之人, 才能開啟書房盡頭的「歸率大門」,繼承他的畢生絕學。 你是慕名而來的求學者,今日踏入這間堆滿典籍、鐘鼎儀器的書房, 卻不慎被反鎖其中……老僕人只留下一句話: 「公子若能解開九道機關中的線索,湊齊連比之術,自然能尋得出路。」 桌上的燭火忽明忽暗,書房的門「喀」一聲鎖上了。 你的探索,就從這裡開始。`, ending: `隨著最後一道機關「喀啦」一聲彈開,儀表板上的三根指針同時停在 \\(4:5:30\\) 的刻度上,密碼鎖盤緩緩浮現一個空格。 你顫抖地轉動旋鈕,輸入了 \\(x=12\\) —— 轟然一聲,書房盡頭那扇塵封多年的「歸率大門」緩緩開啟, 金色的光芒灑落一地。案上浮現一張泛黃的信箋,是衛九章留下的最後手跡: 「連比之道,不在死記公式,而在看透萬物之間,環環相扣的關係。 今日你能循線推理、集腋成裘,已得我畢生所學三分神韻。 去吧,率數傳人。」 恭喜你,成功逃出「衛九章的連比密室」,並繼承了「連比傳人」的稱號!`, endingHiddenExtra: `
🔶 隱藏結局・衛九章印・率數傳人 🔶 就在你準備離開時,懷中的五塊印璽碎片忽然發出微光,自動拼合成一枚完整的古印。 印面浮現出你從未聽過的字句: 「凡能集齊此印者,不僅通曉連比之術,更懂得『處處留心』的道理—— 數學之美,往往藏在最容易被忽略的角落。 此印今日傳予你,望你日後也能將這份細心,傳給更多後人。」 你成為了衛九章唯一被記載於史冊的「率數傳人」,並隨身帶著這枚印璽離開了密室。` }; // 場景清單(依左右順序排列,index 0~4) const SCENES = [ { id: 'A', name: '書桌區', bg: 'assets/scenes/scene_A_desk.png', hotspots: [ { id: 'clue1', type: 'clue', clueId: 'clue1', x: 32, y: 55, label: '泛黃的便條紙' }, { id: 'clue2', type: 'clue', clueId: 'clue2', x: 62, y: 62, label: '老照片' }, { id: 'lock1', type: 'lock', lockId: 'lock1', x: 48, y: 78, label: '機關一:黃銅抽屜鎖' }, { id: 'seal1', type: 'seal', sealId: 'seal1', x: 14, y: 30, label: '???' } ] }, { id: 'B', name: '書櫃牆', bg: 'assets/scenes/scene_B_bookshelf.png', hotspots: [ { id: 'clue3', type: 'clue', clueId: 'clue3', x: 28, y: 50, label: '古董食譜卡片' }, { id: 'clue4', type: 'clue', clueId: 'clue4', x: 70, y: 40, label: '牆上的三角畫框' }, { id: 'lock2', type: 'lock', lockId: 'lock2', x: 30, y: 72, label: '機關二:書櫃暗格鎖' }, { id: 'lock3', type: 'lock', lockId: 'lock3', x: 70, y: 68, label: '機關三:畫框暗鎖' }, { id: 'seal2', type: 'seal', sealId: 'seal2', x: 90, y: 25, label: '???' } ] }, { id: 'C', name: '窗邊工作台', bg: 'assets/scenes/scene_C_window.png', hotspots: [ { id: 'clue5', type: 'clue', clueId: 'clue5', x: 45, y: 58, label: '老舊水塔模型' }, { id: 'clue6', type: 'clue', clueId: 'clue6', x: 68, y: 48, label: '設計圖告示牌' }, { id: 'lock4', type: 'lock', lockId: 'lock4', x: 45, y: 80, label: '機關四:窗台夾層鎖' }, { id: 'seal3', type: 'seal', sealId: 'seal3', x: 12, y: 68, label: '???' } ] }, { id: 'D', name: '地圖與畫框', bg: 'assets/scenes/scene_D_map.png', hotspots: [ { id: 'clue7', type: 'clue', clueId: 'clue7', x: 34, y: 42, label: '三角形花園圖' }, { id: 'clue8', type: 'clue', clueId: 'clue8', x: 66, y: 55, label: '地圖比例尺刻字' }, { id: 'lock5', type: 'lock', lockId: 'lock5', x: 50, y: 75, label: '機關五:暗門八卦銅鎖' }, { id: 'seal4', type: 'seal', sealId: 'seal4', x: 88, y: 78, label: '???' } ] }, { id: 'E', name: '歸率大門', bg: 'assets/scenes/scene_E_door.png', hotspots: [ { id: 'clue9', type: 'clue', clueId: 'clue9', x: 34, y: 42, label: '三色儀表刻度盤' }, { id: 'clue10', type: 'clue', clueId: 'clue10', x: 68, y: 42, label: '老師的遺言字條' }, { id: 'lock6', type: 'lock', lockId: 'lock6', x: 50, y: 56, label: '最終機關:歸率大門金庫鎖' }, { id: 'seal5', type: 'seal', sealId: 'seal5', x: 15, y: 82, label: '???' } ] } ]; // 印璽彩蛋:五枚碎片,集滿解鎖隱藏結局 const SEALS = { seal1: { id: 'seal1', title: '印璽碎片・之一', icon: '🔶', text: `書桌一角的燭台底下,壓著一小塊溫潤的石材碎片, 邊緣刻著模糊的雲紋,像是某個印章的一角。 你把它收進了錦囊深處……會不會還有更多碎片?` }, seal2: { id: 'seal2', title: '印璽碎片・之二', icon: '🔷', text: `書櫃最頂層的縫隙裡,卡著另一塊石材碎片, 拼接處與剛才那塊隱約吻合。` }, seal3: { id: 'seal3', title: '印璽碎片・之三', icon: '🔶', text: `窗台盆栽的泥土下,埋著第三塊碎片, 似乎是主人刻意藏在容易被忽略的地方。` }, seal4: { id: 'seal4', title: '印璽碎片・之四', icon: '🔷', text: `地圖畫框的邊角夾層裡,藏著第四塊碎片, 你已經可以隱約看出印璽上刻的是一個「衛」字。` }, seal5: { id: 'seal5', title: '印璽碎片・之五(最後一塊)', icon: '🔶', text: `歸率大門旁的燭座暗格中,藏著最後一塊碎片。 你將五塊碎片拼在一起,浮現出完整的印文: 「衛九章印・率數傳人」 集滿五塊印璽碎片了!也許逃出密室後,會有意想不到的驚喜……` } }; const SEAL_ORDER = ['seal1', 'seal2', 'seal3', 'seal4', 'seal5']; // 線索資料 const CLUES = { clue1: { id: 'clue1', title: '便條紙:x 與 y 之比', location: '書桌區', icon: '📝', text: `檯燈下壓著一張泛黃便條,字跡工整: 「\\(x\\) 比 \\(y\\),五比六整。」 也就是:\\(x : y = 5 : 6\\)` }, clue2: { id: 'clue2', title: '老照片背後的字跡', location: '書桌區', icon: '🖼️', text: `翻開桌上的老照片,背後用鋼筆潦草寫著: 「\\((x+z)\\) 這麼多,恰是 \\(z\\) 的……不對,是 \\(4\\) 比 \\(3\\) 才對。」 也就是:\\((x+z) : z = 4 : 3\\) 提示:這兩個線索合在一起,或許能解開書桌抽屜的機關。` }, clue3: { id: 'clue3', title: '古董食譜卡片', location: '書櫃牆', icon: '📇', text: `書櫃第二層夾著一張食譜卡片,背面是加密過的秤重紀錄: 「麵粉、糖、奶油的用量,若 \\(2\\) 份麵粉配 \\(5\\) 份糖配 \\(4\\) 份奶油, 其實對應到我常用的秤重刻度是 \\(8:15:12\\)。」 也就是:\\(2x : 5y : 4z = 8 : 15 : 12\\)` }, clue4: { id: 'clue4', title: '牆上畫框的刻字', location: '書櫃牆', icon: '🖼️', text: `畫框裡是一幅三角形花園設計圖,下方刻著一行小字: 「花園是三角形,三邊 \\(a\\)、\\(b\\)、\\(c\\) 公分,周長剛好 \\(210\\) 公分。 且知 \\(a\\) 比 \\(b\\) 是 \\(2\\) 比 \\(3\\),\\(b\\) 比 \\(c\\) 是 \\(4\\) 比 \\(5\\)。」 也就是:周長 \\(=210\\),\\(a:b=2:3\\),\\(b:c=4:5\\)` }, clue5: { id: 'clue5', title: '水塔模型底座刻字', location: '窗邊工作台', icon: '🏺', text: `窗台上一座精巧的水塔模型,底座刻著: 「原水塔:長 \\(3\\) 公尺、寬 \\(2.5\\) 公尺、高 \\(1.5\\) 公尺。」` }, clue6: { id: 'clue6', title: '設計圖告示牌', location: '窗邊工作台', icon: '📋', text: `模型旁的小告示牌寫著: 「新水塔要依原比例擴建,長要多 \\(0.6\\) 公尺。」 提示:把這兩則線索合起來,就能求出新水塔的寬與高。` }, clue7: { id: 'clue7', title: '三角形花園圖', location: '牆上地圖', icon: '🧩', image: 'assets/props/triangle_garden_diagram.png', text: `地圖旁掛著一幅三角形花園設計圖,上面清楚標註著: 「這座花園的三邊 \\(a\\)、\\(b\\)、\\(c\\) 公分,\\(a\\) 比 \\(b\\) 是 \\(2\\) 比 \\(3\\), \\(b\\) 比 \\(c\\) 是 \\(3\\) 比 \\(4\\)。」` }, clue8: { id: 'clue8', title: '地圖比例尺上的刻字', location: '牆上地圖', icon: '📏', text: `地圖邊緣的比例尺上刻著一行小字: 「這個花園三角形的周長,跟你在書櫃找到的那座不一樣哦,這座周長是 \\(180\\) 公分。」 提醒:別跟鎖三的 210 公分搞混了!這裡是全新的一題。` }, clue9: { id: 'clue9', title: '三色儀表刻度盤', location: '歸率大門', icon: '⚙️', image: 'assets/props/dashboard.png', text: `儀表板上有三根指針,分別標示 \\(x\\)、\\(y\\)、\\(z\\),下方刻著: 「當年我設計時,讓 \\(5x\\)、\\(4y\\)、\\(\\dfrac{2}{3}z\\) 三者的指針指向同一刻度。」 也就是:\\(5x = 4y = \\dfrac{2}{3}z\\)` }, clue10: { id: 'clue10', title: '老師的遺言字條', location: '歸率大門', icon: '✉️', text: `儀表板下方壓著最後一張字條,字跡與先前幾道機關的筆跡一致: 「孩子,你手上的錦囊與機關紀錄裡,早已藏著開啟此門的關鍵—— 機關一抽屜裡的 \\(z\\) 值、機關三畫框裡的 \\(b\\) 值、機關五暗門裡的 \\(a\\) 值, 三者相加,再加上老夫的姓名筆畫數 \\(5\\),就是本題的 \\(x + 2y + z\\)。」 這是最後一道機關了:先翻開「機關紀錄」,找出那三個數字,再回來解題吧!` } }; // 鎖具資料 // inputType: 'triplet'(多格數字) | 'single'(單一數字) const LOCKS = { lock1: { id: 'lock1', title: '機關一:書桌抽屜', requiresClues: ['clue1', 'clue2'], lockImg: 'assets/locks/lock_1_drawer.png', findHint: `抽屜上的鎖刻著兩行小字,其中一個條件不知去向…… 請在書桌區找找看,桌上是否有夾著便條紙或老照片?`, question: `若 \\(x:y=5:6\\),且 \\((x+z):z=4:3\\),求 \\(x:y:z\\)。 請將答案的三個最簡整數比依序填入下方轉盤。`, hint: `先處理 \\((x+z):z=4:3\\):交叉相乘可得 \\(3(x+z)=4z\\),化簡後可得 \\(x:z=1:3=5:15\\), 再與 \\(x:y=5:6\\) 合併成完整的連比。`, inputType: 'triplet', labels: ['x', 'y', 'z'], answer: [5, 6, 15], recordSummary: { formula: '\\(x:y=5:6\\),\\((x+z):z=4:3\\)', result: '\\(x : y : z = 5 : 6 : 15\\)', keyNote: '關鍵數值:\\(z = 15\\)', isKeyForFinal: true }, reward: '抽屜彈開,取得「書櫃鑰匙」,可以前往書櫃牆探索了!', unlocksScene: 'B' }, lock2: { id: 'lock2', title: '機關二:書櫃暗格', requiresClues: ['clue3'], lockImg: 'assets/locks/lock_2_bookshelf.png', findHint: `暗格的鎖上刻著一段秤重換算的殘缺算式。 請在書櫃牆找找看,書架夾層裡是否藏著古董食譜卡片?`, question: `已知 \\(2x : 5y : 4z = 8 : 15 : 12\\),求 \\(x:y:z\\)。`, hint: `把等式兩邊同時「除以」\\(x\\)、\\(y\\)、\\(z\\) 前面的係數: \\(x:y:z = \\dfrac{8}{2} : \\dfrac{15}{5} : \\dfrac{12}{4} = 4 : 3 : 3\\)`, inputType: 'triplet', labels: ['x', 'y', 'z'], answer: [4, 3, 3], recordSummary: { formula: '\\(2x : 5y : 4z = 8 : 15 : 12\\)', result: '\\(x : y : z = 4 : 3 : 3\\)', keyNote: '連比化簡結果為 4 : 3 : 3', isKeyForFinal: false }, reward: '書櫃暗格打開,取得「三角形拼圖畫」的一角!記得帶著它去牆上地圖區使用。', grantsProp: 'prop_puzzle' }, lock3: { id: 'lock3', title: '機關三:畫框後的鎖', requiresClues: ['clue4'], lockImg: 'assets/locks/lock_3_frame.jpeg', findHint: `鎖上只寫著「花園周長 210 公分」,其餘比例條件被撕去了。 請在書櫃牆找找看,牆上掛著的三角畫框上有沒有刻字?`, question: `三角形三邊 \\(a, b, c\\) 公分,周長 \\(210\\) 公分,\\(a:b=2:3\\),\\(b:c=4:5\\),求 \\(b\\)。`, hint: `先把兩個比合併成連比:\\(a:b=2:3=8:12\\),\\(b:c=4:5=12:15\\), 所以 \\(a:b:c=8:12:15\\)(總份數 \\(8+12+15=35\\))。 每份 \\(=210\\div35=6\\),\\(b=12\\times6=72\\)。`, inputType: 'single', label: 'b 的值', answer: 72, recordSummary: { formula: '周長 \\(=210\\),\\(a:b=2:3\\),\\(b:c=4:5\\) \\(\\to a:b:c=8:12:15\\)', result: '\\(a=48\\), \\(b=72\\), \\(c=90\\)', keyNote: '關鍵數值:\\(b = 72\\)', isKeyForFinal: true }, reward: '取得「窗台鑰匙」,可以前往窗邊工作台探索了!', unlocksScene: 'C' }, lock4: { id: 'lock4', title: '機關四:窗台夾層', requiresClues: ['clue5', 'clue6'], lockImg: 'assets/locks/lock_4_windowsill.png', findHint: `夾層的鎖需要水塔的原始尺寸與擴建幅度,兩者你都還沒拿到。 請在窗邊工作台找找看,是否有模型或告示牌?`, question: `原水塔長寬高為 \\(3:2.5:1.5\\)(公尺)。新水塔依同比例擴建, 長比原來多 \\(0.6\\) 公尺,求新水塔的寬與高各是多少公尺? 請依序輸入「寬」與「高」。`, hint: `新長 \\(=3+0.6=3.6\\),放大倍率 \\(=3.6\\div3=1.2\\)。 寬 \\(=2.5\\times1.2=3\\),高 \\(=1.5\\times1.2=1.8\\)。`, inputType: 'triplet', labels: ['寬', '高'], answer: [3, 1.8], recordSummary: { formula: '原長寬高 \\(3:2.5:1.5\\),新長 \\(=3.6\\)(放大 \\(1.2\\) 倍)', result: '新水塔 寬 \\(=3\\) 公尺,高 \\(=1.8\\) 公尺', keyNote: '等比例縮放應用', isKeyForFinal: false }, reward: '窗台夾層打開,取得「地圖比例尺」道具,通往牆上地圖區的通道也開啟了!', grantsProp: 'prop_scale', unlocksScene: 'D' }, lock5: { id: 'lock5', title: '機關五:暗門八卦銅鎖', requiresClues: ['clue7', 'clue8'], lockImg: 'assets/locks/lock_5_map_door.jpg', findHint: `暗門的鎖需要一幅完整的三角形設計圖,以及它的周長數字。 請在牆上地圖區找找看——注意:拼圖畫可能需要先集齊書櫃暗格與窗台的道具才能拼出全貌!`, question: `三角形花園三邊 \\(a\\)、\\(b\\)、\\(c\\) 公分,\\(a:b=2:3\\),\\(b:c=3:4\\), 周長為 \\(180\\) 公分,求 \\(a\\)、\\(b\\)、\\(c\\) 各是多少?`, hint: `先把兩個比合併成連比:\\(a:b=2:3\\),\\(b:c=3:4\\),兩式的 \\(b\\) 剛好都是 \\(3\\), 可以直接接起來變成 \\(a:b:c=2:3:4\\)(總份數 \\(2+3+4=9\\))。 每份 \\(=180\\div9=20\\),故 \\(a=40, b=60, c=80\\)。`, inputType: 'triplet', labels: ['a', 'b', 'c'], answer: [40, 60, 80], recordSummary: { formula: '周長 \\(=180\\),\\(a:b=2:3\\),\\(b:c=3:4\\) \\(\\to a:b:c=2:3:4\\)', result: '\\(a=40\\), \\(b=60\\), \\(c=80\\)', keyNote: '關鍵數值:\\(a = 40\\)', isKeyForFinal: true }, reward: '牆面地圖後方浮現暗門,通往最終的「歸率大門」!', unlocksScene: 'E' }, lock6: { id: 'lock6', title: '最終機關:歸率大門金庫鎖', requiresClues: ['clue9', 'clue10'], lockImg: 'assets/locks/lock_6_final_vault.jpg', findHint: `大門的金庫鎖需要三根指針的關係式,以及一個神秘的總和條件。 請在歸率大門這個房間找找看,儀表板附近是否有字條?`, isFinal: true, isTwoStage: true, // 第一階段:展示核心題目骨架(常數以封印神秘符號呈現),輸入 15, 72, 40 解鎖 verifyLabel: '注入關鍵數值・解開封印常數', verifyPrompt: `在解開最終題目之前,大門金庫鎖要求你證明自己已破解前面的核心機關。 請翻開頂部的「📜 機關紀錄」,依序輸入:機關一的 \\(z\\) 值、機關三的 \\(b\\) 值、機關五的 \\(a\\) 值。`, verifyLabels: ['機關一的 z', '機關三的 b', '機關五的 a'], verifyAnswer: [15, 72, 40], verifySuccessMsg: '封印解除!關鍵數值匯聚:\\(15 + 72 + 40 + 5 = 132\\) —— 終極常數重磅現世!', // 第二階段:真正的最終題目(常數 132 已由第一階段驗證得出並重磅登場) question: `已知 \\(5x = 4y = \\dfrac{2}{3}z\\),且 \\(x + 2y + z = 132\\),求 \\(x\\) 的值。`, hint: `設 \\(5x=4y=\\frac23 z=k\\),可得 \\(x=\\frac{k}{5}, y=\\frac{k}{4}, z=\\frac{3k}{2}\\), 化簡同乘以 20 得 \\(x:y:z=4:5:30\\)。 設 \\(x=4r, y=5r, z=30r\\),代入 \\(x+2y+z = 4r+10r+30r = 44r = 132\\),得 \\(r=3\\)。 故 \\(x = 4 \\times 3 = 12\\)。`, inputType: 'single', label: 'x 的值', answer: 12, recordSummary: { formula: '\\(5x=4y=\\frac{2}{3}z \\to x:y:z=4:5:30\\),\\(x+2y+z=132\\)', result: '\\(x = 12\\) (\\(y=15, z=90\\))', keyNote: '最終解鎖成功,開啟歸率大門!', isKeyForFinal: false }, reward: '' } }; const LOCK_ORDER = ['lock1', 'lock2', 'lock3', 'lock4', 'lock5', 'lock6'];