🎮ArcadeLab

视译高阶闯关 · 热词挑战 | 专业口译强化

by RocketGecko40
485 lines31.5 KB
▶ Play
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
    <title>视译高阶闯关 · 热词挑战 | 专业口译强化</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            background: #FEF7E9;
            background-image: linear-gradient(45deg, #FFF3E0 1%, transparent 1%);
            background-size: 28px 28px;
            font-family: 'Segoe UI', 'Poppins', 'Inter', system-ui, 'Microsoft YaHei', sans-serif;
            padding: 28px 22px;
            color: #2C2418;
        }

        .game-container {
            max-width: 1350px;
            margin: 0 auto;
        }

        .hero {
            text-align: center;
            margin-bottom: 28px;
        }
        .hero h1 {
            font-size: 2.4rem;
            background: linear-gradient(135deg, #C55A1E, #E88938);
            background-clip: text;
            -webkit-background-clip: text;
            color: transparent;
        }
        .hero p {
            color: #B4622A;
            font-weight: 500;
        }

        .stats-bar {
            display: flex;
            justify-content: flex-end;
            gap: 28px;
            background: #FFFFFFCC;
            backdrop-filter: blur(4px);
            padding: 10px 30px;
            border-radius: 60px;
            margin-bottom: 32px;
            border: 1px solid #FFD8A8;
        }
        .stat-card {
            background: #FFEDD6;
            padding: 5px 24px;
            border-radius: 48px;
            text-align: center;
        }
        .stat-label {
            font-size: 0.7rem;
            color: #B15512;
        }
        .stat-number {
            font-size: 1.9rem;
            font-weight: 800;
            line-height: 1;
            color: #D9691E;
        }

        .level-tabs {
            display: flex;
            flex-wrap: wrap;
            gap: 14px;
            margin-bottom: 28px;
            justify-content: center;
        }
        .tab-btn {
            background: #F0E2D0;
            padding: 12px 28px;
            border-radius: 60px;
            font-weight: 600;
            cursor: pointer;
            transition: 0.2s;
            border: 1px solid #E2CAA4;
            color: #6B401F;
        }
        .tab-btn.active {
            background: #D9681E;
            color: white;
            border-color: #D9681E;
            box-shadow: 0 6px 14px rgba(217,104,30,0.3);
        }
        .tab-btn.completed { background: #A8C97A; color: #2C5120; border-color: #8CB753; }
        .tab-btn.locked { opacity: 0.5; cursor: not-allowed; background: #D9CDB8; }

        .quiz-panel {
            background: #FFFCF7;
            border-radius: 56px;
            padding: 32px 36px;
            box-shadow: 0 20px 35px rgba(0,0,0,0.05);
            border: 1px solid #FFDEB5;
        }
        .section-title {
            font-size: 1.7rem;
            font-weight: 700;
            border-left: 8px solid #F4A261;
            padding-left: 20px;
            margin-bottom: 28px;
            color: #4E2F12;
        }

        .question-card {
            background: #FFF8EF;
            border-radius: 40px;
            padding: 20px 28px;
            margin-bottom: 26px;
            border: 1px solid #FFDFBC;
        }
        .question-text {
            font-weight: 700;
            font-size: 1.05rem;
            margin-bottom: 18px;
        }
        .options {
            display: flex;
            flex-wrap: wrap;
            gap: 18px;
            margin: 12px 0 6px;
        }
        .opt-btn {
            background: white;
            border: 1.5px solid #F0D0A4;
            padding: 8px 26px;
            border-radius: 60px;
            cursor: pointer;
            font-weight: 500;
            transition: 0.08s linear;
        }
        .opt-btn.selected { background: #D9681E; border-color: #D9681E; color: white; }
        .feedback { margin-top: 12px; font-size: 0.82rem; padding: 5px 14px; border-radius: 28px; display: inline-block; }
        .correct-fb { background: #E0F2D0; color: #2B6E2B; }
        .wrong-fb { background: #FFE3DE; color: #C7362B; }

        .match-area { display: flex; flex-wrap: wrap; gap: 34px; margin: 20px 0; }
        .match-col { flex: 1; background: #F9EFE2; border-radius: 52px; padding: 20px; }
        .match-item {
            background: white; margin: 14px 0; padding: 12px 18px; border-radius: 60px; text-align: center;
            cursor: pointer; border: 1px solid #E9CFA5; font-weight: 500; transition: 0.05s;
        }
        .match-item.selected-match { background: #D9681E; color: white; border-color: #D9681E; }
        .paired-info { background: #EADFC9; border-radius: 48px; padding: 10px; text-align: center; margin-top: 16px; font-size: 0.9rem; }

        .sight-card { background: #FFF4E8; border-radius: 40px; padding: 22px; margin-bottom: 26px; }
        .eng-sentence { background: #E8DCCB; padding: 16px; border-left: 8px solid #F4A261; font-family: monospace; border-radius: 28px; margin-bottom: 16px; font-size: 0.95rem; }
        textarea { width: 100%; background: white; border: 1px solid #F2D2AE; border-radius: 36px; padding: 14px 20px; font-family: inherit; resize: vertical; font-size: 0.9rem; }

        .button-group { text-align: right; margin-top: 34px; display: flex; justify-content: flex-end; gap: 20px; }
        .reset-btn { background: #CBBE9C; border: none; padding: 12px 30px; border-radius: 60px; font-weight: bold; cursor: pointer; }
        .submit-btn { background: #D9681E; border: none; padding: 12px 40px; border-radius: 60px; font-weight: bold; color: white; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
        .complete-badge { background: #D7EABB; border-radius: 48px; padding: 14px; text-align: center; margin-top: 24px; font-weight: bold; }

        @media (max-width: 750px) { .quiz-panel { padding: 20px; } .match-area { flex-direction: column; } }
        footer { margin-top: 32px; text-align: center; color: #B87A42; }
        .hint-icon { font-size: 0.7rem; color: #AA7B4A; margin-top: 6px; }
    </style>
</head>
<body>
<div class="game-container">
    <div class="hero">
        <h1>🎙️ 视译·高难度热词闯关</h1>
        <p>专业判断题 | 词汇推理选择 | 术语高阶连线 | 视译完形填空</p>
    </div>
    <div class="stats-bar">
        <div class="stat-card"><div class="stat-label">🏆 总分</div><div class="stat-number" id="totalScoreSpan">0</div></div>
        <div class="stat-card"><div class="stat-label">📌 通关</div><div class="stat-number" id="progressSpan">0</div><span style="font-size:0.8rem;">/4</span></div>
    </div>
    <div class="level-tabs" id="levelTabs"></div>
    <div id="quizPanel" class="quiz-panel"></div>
    <footer>🔥 高级挑战:每个题型深度考查术语辨析、隐含逻辑与视译准确度</footer>
</div>

<script>
    // ------------------- 高难度题库:深度语法点+复杂热词考察 -------------------
    const levelsData = [
        { // 0 DeepSeek-V4
            id: 0, name: "🧠 01 DeepSeek-V4 开源革命", completed: false, earnedScore: 0, unlocked: true,
            tasks: {
                tf: [ // 高难度:错误选项极隐蔽
                    { text: "DeepSeek-V4 的推出距离R1推理模型发布间隔不到一年,并且首次采用了闭源商业策略。", isTrue: false, explanation: "原文明确more than a year + 依然开源,两个信息点均错误。" },
                    { text: "DeepSeek宣称V4在智能体任务、知识处理和推理能力上优于部分国内竞品,同时提供了Pro/Flash两种适配版本。", isTrue: true, explanation: "原文直接对应:strong performance against domestic competitors,两种版本。" }
                ],
                mc: [ // 词汇语境 + inferential
                    { question: "文中 'cost efficiency' 在描述R1模型时突出体现了什么战略优势?", options: ["高研发投入", "低算力成本与卓越性能比", "硬件依赖度", "垄断性定价"], correct: 1, explanation: "surprising performance and cost efficiency -> 高性价比战略。" },
                    { question: "根据文章,关于DeepSeek的开源理念,以下哪项推理最准确?", options: ["仅限于学术研究,禁止商业修改", "允许开发者自由下载、本地运行甚至修改代码", "仅开放API接口", "需要付费取得商用授权"], correct: 1, explanation: "allowing developers to download the code, run it locally and modify." }
                ],
                matching: { left: ["cost efficiency", "open-source paradigm", "agent-based tasks", "inference capability"], right: ["性价比优势", "开源范式", "智能体任务", "推理能力"] },
                sight: [ // 视译题干复杂,含从句与专业术语
                    { eng: "The Hangzhou-based startup's latest upgrade remains open-source, a strategic move allowing global developers to fine-tune the model for domain-specific applications while ensuring transparency.", refZh: "这家总部位于杭州的初创公司最新升级仍保持开源,这一战略举措让全球开发者能够针对特定领域应用微调模型,同时确保透明度。" },
                    { eng: "DeepSeek V4 achieves robust performance particularly in agent-based tasks and knowledge processing, outperforming many domestic peers in benchmark tests, the company claimed.", refZh: "该公司称,DeepSeek V4在智能体任务和知识处理方面表现强劲,在基准测试中优于许多国内同行。" }
                ]
            }
        },
        { // 1 人形机器人半马 增加技术细节难度
            id: 1, name: "🏃‍♂️ 02 人形机器人半马破纪录", completed: false, earnedScore: 0, unlocked: false,
            tasks: {
                tf: [
                    { text: "2026年赛事中夺冠的机器人“闪电”依靠人类远程操控完赛,成绩未超越人类半马世界纪录。", isTrue: false, explanation: "原文autonomous navigation自主导航完赛,且50分26秒优于人类57分20秒纪录。" },
                    { text: "第二届参赛队伍数量猛增至100余支,并且包括德国、法国、巴西等国际团队,标志着技术成熟度提升。", isTrue: true, explanation: "participating teams increased to more than 100, including Germany, France and Brazil." }
                ],
                mc: [
                    { question: "人形机器人“天工”在首届亦庄半马中的成绩与完赛率说明了什么技术现状?", options: ["所有队伍均轻松完赛", "完赛难度很大,仅30%队伍完赛", "机器人速度首次超过博尔特", "赛事取消"], correct: 1, explanation: "20支仅6支完赛,完赛率30%,反映早期挑战。" },
                    { question: "第二代人形机器人赛事中的“自主导航”能力体现的核心突破是?", options: ["远程遥控精度提升", "无需人类干预的路径规划与平衡", "电池续航减半", "外观模仿人类"], correct: 1, explanation: "autonomous navigation, faster and more stable 技术突破。" }
                ],
                matching: { left: ["humanoid robot", "autonomous navigation", "inaugural edition", "technological breakthrough"], right: ["仿人机器人", "自主导航", "首届赛事", "技术突破"] },
                sight: [
                    { eng: "The second edition witnessed a dramatic leap: humanoid robots completed the 21.0975-kilometer race with improved stability, and over 100 teams including international participants achieved a 78% finish rate.", refZh: "第二届赛事见证了巨大飞跃:人形机器人以更高的稳定性完成了21.0975公里赛程,超过100支包括国际参赛队伍在内的团队实现了78%的完赛率。" },
                    { eng: "Flash's victory with autonomous navigation not only broke the human half-marathon record but also underscored the rapid convergence of AI locomotion and real-time decision-making.", refZh: "闪电凭借自主导航取得的胜利不仅打破了人类半马纪录,更凸显了人工智能运动与实时决策的快速融合。" }
                ]
            }
        },
        { // 2 库克卸任 财务/管理深度
            id: 2, name: "🍏 03 库克卸任与苹果帝国", completed: false, earnedScore: 0, unlocked: false,
            tasks: {
                tf: [
                    { text: "库克卸任后将彻底离开苹果,其接班人John Ternus此前负责苹果的软件工程部门。", isTrue: false, explanation: "库克转任执行董事长,John Ternus是硬件工程负责人。" },
                    { text: "库克任职期间苹果利润从约250亿美元级别增长至1100亿美元以上,市值突破4万亿美元,缔造商业传奇。", isTrue: true, explanation: "利润quadrupled to $110B,市值ballooned to $4 trillion。" }
                ],
                mc: [
                    { question: "文章中“ballooned more than tenfold”形象地描述了苹果公司的什么变化?", options: ["员工数量十倍增长", "市值飙升超过十倍", "产品线扩大十倍", "利润总额十倍"], correct: 1, explanation: "its value ballooned more than tenfold to $4 trillion." },
                    { question: "库克长达近15年的CEO任期被评价为美国商业史上最成功的时期之一,主要依据是什么?", options: ["iPhone单一产品线", "利润及市值指数级增长", "收购数量最多", "零售店数量"], correct: 1, explanation: "annual profit quadrupled, value ballooned tenfold 财务统治力。" }
                ],
                matching: { left: ["step down as CEO", "executive chairman", "quadrupled profit", "corner office"], right: ["卸任CEO", "执行董事长", "利润翻两番(四倍)", "权力/高管地位象征"] },
                sight: [
                    { eng: "Tim Cook's upcoming transition to executive chairman marks the end of a tenure that saw Apple's market capitalization skyrocket from roughly $350 billion to $4 trillion, an unprecedented expansion in corporate history.", refZh: "蒂姆·库克即将转任执行董事长,标志着其任期的结束,在此期间苹果市值从约3500亿美元飙升至4万亿美元,堪称企业史无前例的扩张。" },
                    { eng: "John Ternus, the 50-year-old hardware engineering chief known for leading the development of the M-series chips, will inherit the challenge of sustaining Apple's innovation momentum.", refZh: "50岁的硬件工程负责人John Ternus以领导M系列芯片开发而闻名,他将继承维持苹果创新动力的挑战。" }
                ]
            }
        },
        { // 3 日本7.7级地震 灾害应急+震级词汇深度
            id: 3, name: "🌊 04 日本强震·海啸预警", completed: false, earnedScore: 0, unlocked: false,
            tasks: {
                tf: [
                    { text: "7.7级地震发生两小时后探测到80cm海啸,当局立即发出特大地震风险降低的通知。", isTrue: false, explanation: "政府发布了特大地震风险升高(heightened risk)的警告。" },
                    { text: "大槌町和釜石市曾在2011年大地震海啸中受灾严重,本次再次发布了数千居民的疏散命令。", isTrue: true, explanation: "both hard-hit by 2011, issued evacuation orders." }
                ],
                mc: [
                    { question: "日本气象厅将海啸警报降级为海啸预警(advisory)表明什么?", options: ["危险完全解除", "威胁降低但仍需警惕", "立即取消所有警示", "震级上调"], correct: 1, explanation: "downgraded to tsunami advisory 意味着威胁降低但仍有风险。" },
                    { question: "文中提到 bullet train services were halted 和 motorways closed,主要是为了强调什么?", options: ["交通繁荣", "地震对关键基础设施的冲击", "假期安排", "新干线提速"], correct: 1, explanation: "地震导致的直接社会影响和紧急安全措施。" }
                ],
                matching: { left: ["magnitude 7.7 tremor", "tsunami advisory", "evacuation orders", "megaquake risk"], right: ["7.7级地震", "海啸预警(级别低于警报)", "疏散命令", "特大地震风险"] },
                sight: [
                    { eng: "The government's subsequent warning of a heightened megaquake risk reflected deep-seated anxiety following the 2011 catastrophe, urging residents to review emergency protocols for a potential Nankai Trough event.", refZh: "政府随后发布的特大地震风险升高警告反映出2011年灾难后根深蒂固的焦虑,敦促居民针对可能的南海海槽事件检查应急方案。" },
                    { eng: "Although no immediate casualties were reported, the temblor paralyzed bullet trains and forced thousands into evacuation shelters, exposing the brittle balance between modern infrastructure and seismic forces.", refZh: "尽管暂无即时伤亡报告,但地震导致新干线瘫痪并迫使数千人进入避难所,暴露出现代基础设施与地震力量之间的脆弱平衡。" }
                ]
            }
        }
    ];

    let gameLevels = JSON.parse(JSON.stringify(levelsData));
    let totalPoints = 0;
    let currentLevelId = 0;
    let tempUserAnswers = {};      // 存储所有题目答案
    let matchPairsStorage = {};    // 每个关卡连线存储对象

    const tabsDiv = document.getElementById('levelTabs');
    const quizDiv = document.getElementById('quizPanel');
    const totalSpan = document.getElementById('totalScoreSpan');
    const progressSpan = document.getElementById('progressSpan');

    function recalcAndUnlock() {
        totalPoints = gameLevels.reduce((sum, l) => sum + (l.completed ? l.earnedScore : 0), 0);
        totalSpan.innerText = totalPoints;
        let completedCnt = gameLevels.filter(l => l.completed).length;
        progressSpan.innerText = completedCnt;
        for (let i = 0; i < gameLevels.length; i++) {
            if (i === 0) gameLevels[i].unlocked = true;
            else if (gameLevels[i-1].completed && !gameLevels[i].unlocked) gameLevels[i].unlocked = true;
        }
        renderTabs();
    }

    function renderTabs() {
        tabsDiv.innerHTML = '';
        gameLevels.forEach((lvl, idx) => {
            let tabClass = `tab-btn ${currentLevelId === idx ? 'active' : ''} ${lvl.completed ? 'completed' : ''} ${!lvl.unlocked ? 'locked' : ''}`;
            let tab = document.createElement('div');
            tab.className = tabClass;
            tab.innerText = `${lvl.name} ${lvl.completed ? '✓' : ''}`;
            if (lvl.unlocked) tab.addEventListener('click', () => { currentLevelId = idx; renderCurrentLevel(); renderTabs(); });
            tabsDiv.appendChild(tab);
        });
    }

    function initMatchStore(levelId, leftLen) {
        if (!matchPairsStorage[levelId]) matchPairsStorage[levelId] = { pairs: [], leftSelected: null, rightSelected: null };
    }

    function renderCurrentLevel() {
        const level = gameLevels[currentLevelId];
        if (!level) return;
        const tasks = level.tasks;
        let html = `<div class="section-title">🔥 ${level.name} · 高难度挑战</div>`;

        // 判断题(每题7分,难度加大)
        html += `<div style="margin-bottom: 32px;"><h3>⚖️ 深度判断题 (每题7分·细节陷阱)</h3>`;
        tasks.tf.forEach((item, idx) => {
            html += `<div class="question-card"><div class="question-text">${idx+1}. ${item.text}</div>
                     <div class="options"><div class="opt-btn" data-type="tf" data-qidx="${idx}" data-val="true">✅ 正确</div><div class="opt-btn" data-type="tf" data-qidx="${idx}" data-val="false">❌ 错误</div></div>
                     <div id="tf_fb_${idx}" class="feedback"></div></div>`;
        });
        html += `</div>`;

        // 选择题(每题9分,推理难度)
        html += `<div style="margin-bottom: 32px;"><h3>🔎 推理选择题 (每题9分·语境逻辑)</h3>`;
        tasks.mc.forEach((mc, idx) => {
            html += `<div class="question-card"><div class="question-text">${idx+1}. ${mc.question}</div><div class="options">`;
            mc.options.forEach((opt, optIdx) => {
                html += `<div class="opt-btn" data-type="mc" data-qidx="${idx}" data-opt="${optIdx}">${String.fromCharCode(65+optIdx)}. ${opt}</div>`;
            });
            html += `</div><div id="mc_fb_${idx}" class="feedback"></div></div>`;
        });
        html += `</div>`;

        // 连线题(高阶术语配对,每对7分,共28分)
        const match = tasks.matching;
        const leftList = match.left, rightList = match.right;
        initMatchStore(currentLevelId, leftList.length);
        const store = matchPairsStorage[currentLevelId];
        const pairedCount = store.pairs.length;
        html += `<div style="margin-bottom: 32px;"><h3>🔗 专业术语连线 (每对7分·精准匹配)</h3>
                 <div class="match-area"><div class="match-col"><strong>📌 核心术语</strong><div id="leftMatchCol">${leftList.map((l,i)=>`<div class="match-item" data-side="left" data-idx="${i}">${l}</div>`).join('')}</div></div>
                 <div class="match-col"><strong>📖 专业释义</strong><div id="rightMatchCol">${rightList.map((r,i)=>`<div class="match-item" data-side="right" data-idx="${i}">${r}</div>`).join('')}</div></div></div>
                 <div id="matchStatusMsg" class="paired-info">🔗 当前配对: ${pairedCount} / ${leftList.length} 组</div>
                 <div id="matchFeedMsg" class="hint-icon"></div></div>`;

        // 视译题(复杂长难句,每句15分)
        html += `<div><h3>🎙️ 高级视译 (每句15分·结构+术语准确)</h3>`;
        tasks.sight.forEach((item, idx) => {
            let saved = tempUserAnswers[`sight_${currentLevelId}_${idx}`] || '';
            html += `<div class="sight-card"><div class="eng-sentence">📖 ${item.eng}</div>
                     <textarea rows="3" class="sight-textarea" data-sightidx="${idx}" placeholder="在此输入精炼中文视译...">${saved}</textarea>
                     <div id="sight_fb_${idx}" class="feedback"></div>
                     <div class="hint-icon">📌 参考关键术语: ${item.refZh.substring(0,30)}…</div></div>`;
        });
        html += `</div>`;

        html += `<div class="button-group"><button class="reset-btn" id="resetLevelBtn">🔄 重置本关</button><button class="submit-btn" id="submitLevelBtn">🏅 提交本关·获取高分</button></div>`;
        if (level.completed) html += `<div class="complete-badge">🏆 通关分数 ${level.earnedScore}/100 精英段位 (可复习不改分)</div>`;
        quizDiv.innerHTML = html;

        attachChoiceEvents();
        attachMatchEvents(currentLevelId, leftList, rightList);
        document.querySelectorAll('.sight-textarea').forEach(ta => {
            let idx = parseInt(ta.dataset.sightidx);
            ta.addEventListener('input', (e) => { tempUserAnswers[`sight_${currentLevelId}_${idx}`] = ta.value; });
        });
        document.getElementById('resetLevelBtn')?.addEventListener('click', () => resetCurrent());
        document.getElementById('submitLevelBtn')?.addEventListener('click', () => evaluateHardLevel());
    }

    function attachChoiceEvents() {
        document.querySelectorAll('.opt-btn[data-type="tf"]').forEach(btn => {
            btn.addEventListener('click', (e) => {
                let qidx = parseInt(btn.dataset.qidx), val = btn.dataset.val === 'true';
                let parent = btn.closest('.question-card');
                parent.querySelectorAll('.opt-btn').forEach(b => b.classList.remove('selected'));
                btn.classList.add('selected');
                tempUserAnswers[`tf_${currentLevelId}_${qidx}`] = val;
                document.getElementById(`tf_fb_${qidx}`).innerHTML = '';
            });
        });
        document.querySelectorAll('.opt-btn[data-type="mc"]').forEach(btn => {
            btn.addEventListener('click', (e) => {
                let qidx = parseInt(btn.dataset.qidx), opt = parseInt(btn.dataset.opt);
                let parent = btn.closest('.question-card');
                parent.querySelectorAll('.opt-btn').forEach(b => b.classList.remove('selected'));
                btn.classList.add('selected');
                tempUserAnswers[`mc_${currentLevelId}_${qidx}`] = opt;
                document.getElementById(`mc_fb_${qidx}`).innerHTML = '';
            });
        });
    }

    function attachMatchEvents(levelId, leftArr, rightArr) {
        const store = matchPairsStorage[levelId];
        if (!store) return;
        const leftItems = document.querySelectorAll('.match-item[data-side="left"]');
        const rightItems = document.querySelectorAll('.match-item[data-side="right"]');
        const updateHighlights = () => {
            leftItems.forEach(l => l.classList.remove('selected-match'));
            rightItems.forEach(r => r.classList.remove('selected-match'));
            if(store.leftSelected !== null) document.querySelector(`.match-item[data-side="left"][data-idx="${store.leftSelected}"]`)?.classList.add('selected-match');
            if(store.rightSelected !== null) document.querySelector(`.match-item[data-side="right"][data-idx="${store.rightSelected}"]`)?.classList.add('selected-match');
        };
        const attemptPair = (lIdx, rIdx) => {
            let leftWord = leftArr[lIdx], rightWord = rightArr[rIdx];
            let validPairs = [
                ["cost efficiency","性价比优势"],["open-source paradigm","开源范式"],["agent-based tasks","智能体任务"],["inference capability","推理能力"],
                ["humanoid robot","仿人机器人"],["autonomous navigation","自主导航"],["inaugural edition","首届赛事"],["technological breakthrough","技术突破"],
                ["step down as CEO","卸任CEO"],["executive chairman","执行董事长"],["quadrupled profit","利润翻两番(四倍)"],["corner office","权力/高管地位象征"],
                ["magnitude 7.7 tremor","7.7级地震"],["tsunami advisory","海啸预警(级别低于警报)"],["evacuation orders","疏散命令"],["megaquake risk","特大地震风险"]
            ];
            let isValid = validPairs.some(p => p[0]===leftWord && p[1]===rightWord);
            if(isValid && !store.pairs.some(p=>p.left===lIdx && p.right===rIdx)) {
                store.pairs.push({left:lIdx, right:rIdx});
                document.getElementById('matchStatusMsg').innerHTML = `🔗 已配对: ${store.pairs.length}/${leftArr.length} 组`;
                document.getElementById('matchFeedMsg').innerHTML = '✅ 术语配对正确!';
                setTimeout(()=>{if(document.getElementById('matchFeedMsg')) document.getElementById('matchFeedMsg').innerHTML='';},800);
            } else if(!isValid) {
                document.getElementById('matchFeedMsg').innerHTML = '❌ 配对错误,专业语义不匹配';
                setTimeout(()=>{if(document.getElementById('matchFeedMsg')) document.getElementById('matchFeedMsg').innerHTML='';},800);
            }
            store.leftSelected = null; store.rightSelected = null; updateHighlights();
        };
        const leftClick = (e) => { let lIdx = parseInt(e.currentTarget.dataset.idx); if(store.rightSelected !== null) attemptPair(lIdx, store.rightSelected); else { store.leftSelected = lIdx; store.rightSelected = null; } updateHighlights(); };
        const rightClick = (e) => { let rIdx = parseInt(e.currentTarget.dataset.idx); if(store.leftSelected !== null) attemptPair(store.leftSelected, rIdx); else { store.rightSelected = rIdx; store.leftSelected = null; } updateHighlights(); };
        leftItems.forEach(el => { el.removeEventListener('click', leftClick); el.addEventListener('click', leftClick); });
        rightItems.forEach(el => { el.removeEventListener('click', rightClick); el.addEventListener('click', rightClick); });
        updateHighlights();
    }

    function resetCurrent() {
        if(gameLevels[currentLevelId].completed) alert("通关关卡重置答题记录,已获分数保留。");
        for(let k in tempUserAnswers) if(k.includes(`_${currentLevelId}_`)) delete tempUserAnswers[k];
        if(matchPairsStorage[currentLevelId]) matchPairsStorage[currentLevelId] = { pairs: [], leftSelected: null, rightSelected: null };
        renderCurrentLevel();
    }

    function evaluateHardLevel() {
        const level = gameLevels[currentLevelId];
        if(level.completed) { alert(`本关已完成,得分 ${level.earnedScore}。再次练习不累加。`); return; }
        let total = 0;
        const tasks = level.tasks;
        // 判断评分 7分/题
        tasks.tf.forEach((item,idx) => {
            let ans = tempUserAnswers[`tf_${currentLevelId}_${idx}`];
            let correct = (ans === item.isTrue);
            let fb = document.getElementById(`tf_fb_${idx}`);
            if(correct) { total += 7; if(fb) { fb.innerHTML = '✓ 深度判断正确 +7分'; fb.className='feedback correct-fb';} }
            else { if(fb) { fb.innerHTML = `✗ 错误。细节: ${item.explanation}`; fb.className='feedback wrong-fb';} }
        });
        // 选择9分/题
        tasks.mc.forEach((mc,idx) => {
            let ans = tempUserAnswers[`mc_${currentLevelId}_${idx}`];
            let correct = (ans === mc.correct);
            let fb = document.getElementById(`mc_fb_${idx}`);
            if(correct) { total += 9; if(fb) { fb.innerHTML='✓ 推理正确 +9分'; fb.className='feedback correct-fb';} }
            else { if(fb) { fb.innerHTML = `✗ 错误。正确答案: ${mc.options[mc.correct]}`; fb.className='feedback wrong-fb';} }
        });
        // 连线7分每组
        let matchStore = matchPairsStorage[currentLevelId];
        let matchPoints = matchStore ? Math.min(28, matchStore.pairs.length * 7) : 0;
        total += matchPoints;
        let statusDiv = document.getElementById('matchStatusMsg');
        if(statusDiv) statusDiv.innerHTML += `  🏅 连线得分 ${matchPoints}/28`;
        // 视译15分/句 (严苛评分)
        let sightTotal = 0;
        tasks.sight.forEach((item, idx) => {
            let userTrans = tempUserAnswers[`sight_${currentLevelId}_${idx}`]?.trim() || '';
            let pts = 0;
            if(userTrans.length >= 12) pts = 10;
            if(userTrans.includes(item.refZh.substring(4,12)) && userTrans.length > 15) pts = 13;
            if(userTrans === item.refZh || (userTrans.length > 20 && userTrans.includes("战略") && userTrans.includes("突破"))) pts = 15;
            else if(userTrans.length > 28) pts = 12;
            sightTotal += pts;
            let fbDiv = document.getElementById(`sight_fb_${idx}`);
            if(fbDiv) fbDiv.innerHTML = `📝 视译严谨评分: ${pts}/15 (需贴合原文高阶表达)`;
        });
        total += sightTotal;
        total = Math.min(100, total);
        level.completed = true;
        level.earnedScore = total;
        recalcAndUnlock();
        renderCurrentLevel();
        alert(`🏅 精英通关「${level.name}」\n高难度总分: ${total}/100 分!展现口译实力。`);
        renderTabs();
    }

    function init() { recalcAndUnlock(); renderCurrentLevel(); }
    init();
</script>
</body>
</html>

Game Source: 视译高阶闯关 · 热词挑战 | 专业口译强化

Creator: RocketGecko40

Libraries: none

Complexity: complex (485 lines, 31.5 KB)

The full source code is displayed above on this page.

Remix Instructions

To remix this game, copy the source code above and modify it. Add a ARCADELAB header at the top with "remix_of: game-rocketgecko40-mqcftkkh" to link back to the original. Then publish at arcadelab.ai/publish.