视译高阶闯关 · 热词挑战 | 专业口译强化
by RocketGecko40485 lines31.5 KB
<!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.