Problem 114514 >> deebseek的顶级out 1 |
qianzixuan @ 2025-09-21 19:11:41
wait........................
|
qianzixuan @ 2025-09-30 17:32:03
<!DOCTYPE html>
<html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>古代战争模拟器 - 帝国崛起</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Microsoft YaHei', sans-serif; } body { background: linear-gradient(to bottom, #1a2a6c, #b21f1f, #fdbb2d); color: #fff; min-height: 100vh; padding: 20px; background-attachment: fixed; } .container { max-width: 1200px; margin: 0 auto; background: rgba(0, 0, 0, 0.7); border-radius: 15px; padding: 20px; box-shadow: 0 0 25px rgba(0, 0, 0, 0.8); } header { text-align: center; padding: 20px 0; border-bottom: 2px solid #d4af37; margin-bottom: 30px; } |
qianzixuan @ 2025-09-30 17:32:16
h1 {
font-size: 3rem; color: #d4af37; text-shadow: 3px 3px 5px rgba(0, 0, 0, 0.8); margin-bottom: 10px; } .subtitle { font-size: 1.2rem; color: #f8f9fa; margin-bottom: 20px; } .game-container { display: grid; grid-template-columns: 3fr 1fr; gap: 20px; } .main-content { display: grid; grid-template-rows: auto 1fr; gap: 20px; } .player-info { background: rgba(139, 0, 0, 0.6); padding: 15px; border-radius: 10px; display: flex; justify-content: space-between; align-items: center; } .player-stats { display: flex; gap: 20px; } .stat { text-align: center; } .stat-value { font-size: 1.5rem; font-weight: bold; color: #ffd700; } .stat-label { font-size: 0.9rem; color: #f8f9fa; } |
qianzixuan @ 2025-09-30 17:32:46
.game-tabs {
display: flex; gap: 10px; margin-bottom: 15px; } .tab { padding: 10px 20px; background: rgba(139, 0, 0, 0.7); border-radius: 5px; cursor: pointer; transition: background 0.3s; } .tab.active { background: rgba(184, 134, 11, 0.9); } .tab-content { background: rgba(0, 0, 0, 0.6); padding: 20px; border-radius: 10px; min-height: 400px; } .tab-pane { display: none; } .tab-pane.active { display: block; } .army-management { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } |
qianzixuan @ 2025-09-30 17:32:59
.unit-card {
background: rgba(139, 0, 0, 0.5); padding: 15px; border-radius: 8px; margin-bottom: 15px; } .unit-header { display: flex; justify-content: space-between; margin-bottom: 10px; } .unit-name { font-weight: bold; color: #ffd700; } .unit-count { font-weight: bold; } .unit-controls { display: flex; gap: 10px; margin-top: 10px; } .btn { padding: 8px 15px; background: linear-gradient(to bottom, #8b0000, #660000); color: white; border: none; border-radius: 4px; cursor: pointer; transition: all 0.3s; } .btn:hover { background: linear-gradient(to bottom, #a52a2a, #8b0000); transform: translateY(-2px); } |
qianzixuan @ 2025-09-30 17:33:10
.btn-small {
padding: 5px 10px; font-size: 0.9rem; } .battle-interface { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; text-align: center; } .army-display { background: rgba(139, 0, 0, 0.5); padding: 15px; border-radius: 8px; } .battle-log { background: rgba(0, 0, 0, 0.7); padding: 15px; border-radius: 8px; height: 200px; overflow-y: auto; margin-top: 20px; text-align: left; font-family: 'Courier New', monospace; } .log-entry { margin-bottom: 5px; padding-bottom: 5px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); white-space: nowrap; overflow: hidden; } |
qianzixuan @ 2025-09-30 17:33:24
.typing-cursor {
display: inline-block; background-color: #ffd700; width: 8px; height: 1em; margin-left: 2px; animation: blink 1s infinite; } @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } .victory { color: #90ee90; } .defeat { color: #ff6b6b; } .event { color: #ffd700; } .sidebar { display: flex; flex-direction: column; gap: 20px; } .card { background: rgba(139, 0, 0, 0.6); padding: 15px; border-radius: 10px; } .card-title { font-size: 1.2rem; color: #ffd700; margin-bottom: 15px; text-align: center; border-bottom: 1px solid rgba(255, 255, 255, 0.2); padding-bottom: 8px; } |
qianzixuan @ 2025-09-30 17:33:36
.event-log {
height: 200px; overflow-y: auto; font-family: 'Courier New', monospace; } .tech-tree { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .tech { background: rgba(0, 0, 0, 0.4); padding: 10px; border-radius: 5px; text-align: center; cursor: pointer; transition: all 0.3s; } .tech:hover { background: rgba(184, 134, 11, 0.4); } .tech.unlocked { background: rgba(0, 100, 0, 0.4); } .progress-bar { height: 20px; background: rgba(0, 0, 0, 0.5); border-radius: 10px; margin: 10px 0; overflow: hidden; } .progress { height: 100%; background: linear-gradient(to right, #8b0000, #d4af37); border-radius: 10px; transition: width 0.5s; } .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); z-index: 1000; justify-content: center; align-items: center; } |
qianzixuan @ 2025-09-30 17:34:44
.modal-content {
background: linear-gradient(to bottom, #2c3e50, #4a235a); padding: 30px; border-radius: 15px; width: 500px; max-width: 90%; text-align: center; font-family: 'Courier New', monospace; } .modal-title { font-size: 2rem; color: #d4af37; margin-bottom: 20px; } .modal-btn { padding: 12px 25px; background: linear-gradient(to bottom, #8b0000, #660000); color: white; border: none; border-radius: 5px; font-size: 1.1rem; cursor: pointer; margin-top: 20px; transition: all 0.3s; } .modal-btn:hover { background: linear-gradient(to bottom, #a52a2a, #8b0000); transform: scale(1.05); } .typewriter-text { white-space: nowrap; overflow: hidden; } |
qianzixuan @ 2025-09-30 17:34:59
.narrator {
position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); width: 80%; max-width: 800px; background: rgba(0, 0, 0, 0.8); padding: 15px; border-radius: 10px; border-left: 4px solid #d4af37; font-family: 'Courier New', monospace; display: none; z-index: 100; } .narrator-text { min-height: 1.5em; } @media (max-width: 900px) { .game-container { grid-template-columns: 1fr; } .army-management, .battle-interface { grid-template-columns: 1fr; } .narrator { width: 90%; font-size: 0.9rem; } } |
qianzixuan @ 2025-09-30 17:35:19
.controls {
display: flex; justify-content: center; gap: 10px; margin-top: 10px; } .control-btn { padding: 5px 10px; background: rgba(139, 0, 0, 0.7); color: white; border: none; border-radius: 3px; cursor: pointer; } .sound-control { position: absolute; top: 20px; right: 20px; background: rgba(0, 0, 0, 0.5); padding: 8px; border-radius: 50%; cursor: pointer; z-index: 10; } </style> </head> <body> |
qianzixuan @ 2025-09-30 17:35:49
<div class="sound-control" onclick="toggleSound()">??</div>
<div class="container"> <header> <h1>古代战争模拟器</h1> <div class="subtitle">建立你的帝国,征服已知世界!</div> </header> <div class="player-info"> <div class="player-identity"> <h2>指挥官: <span id="commander-name">亚历山大大帝</span></h2> <p>文明: <span id="civilization">马其顿帝国</span></p> </div> <div class="player-stats"> <div class="stat"> <div class="stat-value" id="gold-value">1000</div> <div class="stat-label">黄金</div> </div> <div class="stat"> <div class="stat-value" id="food-value">500</div> <div class="stat-label">食物</div> </div> <div class="stat"> <div class="stat-value" id="renown-value">50</div> <div class="stat-label">声望</div> </div> <div class="stat"> <div class="stat-value" id="turn-value">1</div> <div class="stat-label">回合</div> </div> </div> </div> <div class="game-container"> <div class="main-content"> <div class="game-tabs"> <div class="tab active" data-tab="army">军队管理</div> <div class="tab" data-tab="battle">军事行动</div> <div class="tab" data-tab="kingdom">王国发展</div> <div class="tab" data-tab="diplomacy">外交关系</div> </div> <div class="tab-content"> <div class="tab-pane active" id="army-tab"> <h3>你的军队</h3> <p>招募和训练军队,为征服做准备</p> <div class="army-management"> <div class="unit-list"> <div class="unit-card"> <div class="unit-header"> <span class="unit-name">步兵军团</span> <span class="unit-count">数量: <span id="infantry-count">100</span></span> </div> <div class="progress-bar"> <div class="progress" style="width: 60%"></div> </div> <p>训练水平: 经验丰富</p> <div class="unit-controls"> <button class="btn btn-small" onclick="recruitUnit('infantry')">招募 (+10)</button> <button class="btn btn-small" onclick="trainUnit('infantry')">训练</button> </div> </div> <div class="unit-card"> <div class="unit-header"> <span class="unit-name">骑兵部队</span> <span class="unit-count">数量: <span id="cavalry-count">50</span></span> </div> <div class="progress-bar"> <div class="progress" style="width: 40%"></div> </div> <p>训练水平: 受过训练</p> <div class="unit-controls"> <button class="btn btn-small" onclick="recruitUnit('cavalry')">招募 (+5)</button> <button class="btn btn-small" onclick="trainUnit('cavalry')">训练</button> </div> </div> </div> <div class="unit-list"> <div class="unit-card"> <div class="unit-header"> <span class="unit-name">弓箭手</span> <span class="unit-count">数量: <span id="archers-count">75</span></span> |
qianzixuan @ 2025-09-30 17:35:58
</div>
<div class="progress-bar"> <div class="progress" style="width: 50%"></div> </div> <p>训练水平: 受过训练</p> <div class="unit-controls"> <button class="btn btn-small" onclick="recruitUnit('archers')">招募 (+8)</button> <button class="btn btn-small" onclick="trainUnit('archers')">训练</button> </div> </div> <div class="unit-card"> <div class="unit-header"> <span class="unit-name">攻城武器</span> <span class="unit-count">数量: <span id="siege-count">5</span></span> |
qianzixuan @ 2025-09-30 17:36:13
</div>
<div class="progress-bar"> <div class="progress" style="width: 20%"></div> </div> <p>训练水平: 新手</p> <div class="unit-controls"> <button class="btn btn-small" onclick="recruitUnit('siege')">建造 (+1)</button> <button class="btn btn-small" onclick="trainUnit('siege')">训练</button> </div> </div> </div> </div> </div> <div class="tab-pane" id="battle-tab"> <h3>军事行动</h3> <p>选择你的作战目标</p> <div class="battle-interface"> <div class="army-display"> <h4>你的军队</h4> <div class="unit-stats"> <p>总兵力: <span id="total-troops">230</span></p> <p>军队士气: <span id="army-morale">75</span>/100</p> <p>攻击力: <span id="army-attack">145</span></p> <p>防御力: <span id="army-defense">120</span></p> </div> <button class="btn" onclick="startBattle()">发动攻击</button> </div> <div class="army-display"> <h4>敌方情报</h4> <div class="unit-stats"> <p>波斯守军</p> <p>兵力: 约 180-220 人</p> <p>防御工事: 中等</p> <p>资源: 丰富</p> </div> <button class="btn" onclick="scoutEnemy()">侦察敌军</button> </div> </div> <div class="battle-log" id="battle-log"> <div class="log-entry">军事顾问: 陛下,我们的军队已准备就绪,请选择攻击目标。</div> </div> </div> <div class="tab-pane" id="kingdom-tab"> <h3>王国发展</h3> <p>建设你的帝国,提升国力</p> <div class="tech-tree"> <div class="tech unlocked"> <h4>农业改良</h4> <p>+10% 食物生产</p> <p>已研发</p> </div> <div class="tech"> <h4>军事训练</h4> <p>+15% 军队经验</p> <p>需要: 200黄金</p> |
qianzixuan @ 2025-09-30 17:36:28
</div>
<div class="tech"> <h4>冶金术</h4> <p>+20% 武器强度</p> <p>需要: 300黄金</p> </div> <div class="tech"> <h4>防御工事</h4> <p>+25% 城市防御</p> <p>需要: 400黄金</p> </div> </div> </div> <div class="tab-pane" id="diplomacy-tab"> <h3>外交关系</h3> <p>与其他势力互动,建立联盟或宣战</p> <div class="diplomacy-options"> <div class="nation-card"> <h4>罗马共和国</h4> <p>关系: 中立</p> <p>态度: 谨慎</p> <button class="btn btn-small">派遣使者</button> <button class="btn btn-small">提出贸易</button> </div> <div class="nation-card"> <h4>波斯帝国</h4> <p>关系: 敌对</p> <p>态度: 侵略性</p> <button class="btn btn-small">提出停战</button> <button class="btn btn-small">最后通牒</button> </div> </div> </div> </div> </div> <div class="sidebar"> <div class="card"> <div class="card-title">事件日志</div> <div class="event-log" id="event-log"> <div class="log-entry">纪元开始: 你继承了马其顿的王位</div> <div class="log-entry">农业丰收: 食物产量增加</div> <div class="log-entry event">边境冲突: 波斯军队袭击了北部村庄</div> <div class="log-entry">贸易协议: 与雅典建立了贸易路线</div> <div class="log-entry">招募完成: 新增50名步兵</div> </div> </div> <div class="card"> |
qianzixuan @ 2025-09-30 17:36:41
<div class="card-title">任务目标</div>
<ul> <li>征服波斯省份 (0/5)</li> <li>建立3座城市 (1/3)</li> <li>发展5项科技 (1/5)</li> <li>积累1000声望 (50/1000)</li> </ul> </div> <div class="card"> <div class="card-title">世界地图</div> <div class="mini-map"> <p>已知世界:</p> <p>马其顿 - 你的领土</p> <p>希腊 - 盟友</p> <p>波斯 - 敌对</p> <p>埃及 - 未探索</p> </div> </div> </div> </div> </div> <div class="modal" id="battle-modal"> <div class="modal-content"> <div class="modal-title">战斗结果</div> <div id="battle-result"> <p>你的军队与波斯守军激烈交战!</p> <p>马其顿方损失: 45 士兵</p> <p>波斯方损失: 78 士兵</p> <p class="victory">胜利!你成功占领了波斯要塞</p> <p>获得战利品: 黄金 +200, 食物 +150</p> </div> <button class="modal-btn" onclick="closeModal()">继续</button> </div> </div> <div class="narrator" id="narrator"> <div class="narrator-text" id="narrator-text"></div> <div class="controls"> <button class="control-btn" onclick="typewriterSpeed('faster')">加速</button> <button class="control-btn" onclick="typewriterSpeed('slower')">减速</button> <button class="control-btn" onclick="skipTypewriter()">跳过</button> </div> </div> |
qianzixuan @ 2025-09-30 17:36:51
<script>
// 游戏数据 const gameState = { gold: 1000, food: 500, renown: 50, turn: 1, army: { infantry: 100, cavalry: 50, archers: 75, siege: 5 }, technologies: ['agriculture'], relations: { rome: 'neutral', persia: 'hostile', egypt: 'unknown' } }; // 打字机效果设置 const typewriterSettings = { speed: 30, // 字符之间的延迟(毫秒) enabled: true, currentText: '', currentIndex: 0, timer: null, targetElement: null, callback: null, soundEnabled: true }; // 初始化游戏 function initializeGame() { updateResourcesDisplay(); updateArmyDisplay(); // 设置标签页切换 document.querySelectorAll('.tab').forEach(tab => { tab.addEventListener('click', () => { document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); document.querySelectorAll('.tab-pane').forEach(p => p.classList.remove('active')); tab.classList.add('active'); document.getElementById(`${tab.dataset.tab}-tab`).classList.add('active'); }); }); |
qianzixuan @ 2025-09-30 17:37:05
// 初始旁白
setTimeout(() => { showNarrator("公元前356年,你作为马其顿的新王,肩负着征服已知世界的使命。你的军队已准备就绪,陛下,请下达命令。"); }, 1000); } // 打字机效果函数 function typeText(element, text, callback = null) { if (!typewriterSettings.enabled) { element.innerHTML = text; if (callback) callback(); return; } // 清除现有打字效果 if (typewriterSettings.timer) { clearTimeout(typewriterSettings.timer); } typewriterSettings.currentText = text; typewriterSettings.currentIndex = 0; typewriterSettings.targetElement = element; typewriterSettings.callback = callback; element.innerHTML = ''; // 开始打字效果 typeNextCharacter(); } function typeNextCharacter() { if (typewriterSettings.currentIndex < typewriterSettings.currentText.length) { // 添加下一个字符 const char = typewriterSettings.currentText.charAt(typewriterSettings.currentIndex); typewriterSettings.targetElement.innerHTML += char; typewriterSettings.currentIndex++; // 播放打字音效 if (typewriterSettings.soundEnabled) { playTypewriterSound(); } // 设置下一个字符的延迟 typewriterSettings.timer = setTimeout(typeNextCharacter, typewriterSettings.speed); } else { // 打字完成,添加光标 typewriterSettings.targetElement.innerHTML += '<span class="typing-cursor"></span>'; if (typewriterSettings.callback) { typewriterSettings.callback(); } } } function playTypewriterSound() { // 简单模拟打字机声音 const context = new (window.AudioContext || window.webkitAudioContext)(); const oscillator = context.createOscillator(); const gainNode = context.createGain(); oscillator.type = 'square'; oscillator.frequency.setValueAtTime(100 + Math.random() * 300, context.currentTime); gainNode.gain.setValueAtTime(0.1, context.currentTime); gainNode.gain.exponentialRampToValueAtTime(0.001, context.currentTime + 0.05); oscillator.connect(gainNode); gainNode.connect(context.destination); |
qianzixuan @ 2025-09-30 17:37:26
oscillator.start();
oscillator.stop(context.currentTime + 0.05); } function typewriterSpeed(direction) { if (direction === 'faster') { typewriterSettings.speed = Math.max(10, typewriterSettings.speed - 10); } else { typewriterSettings.speed = Math.min(100, typewriterSettings.speed + 10); } } function skipTypewriter() { if (typewriterSettings.timer) { clearTimeout(typewriterSettings.timer); } if (typewriterSettings.targetElement) { typewriterSettings.targetElement.innerHTML = typewriterSettings.currentText; typewriterSettings.targetElement.innerHTML += '<span class="typing-cursor"></span>'; if (typewriterSettings.callback) { typewriterSettings.callback(); } } } function toggleSound() { typewriterSettings.soundEnabled = !typewriterSettings.soundEnabled; document.querySelector('.sound-control').textContent = typewriterSettings.soundEnabled ? '??' : '??'; } function showNarrator(text) { const narrator = document.getElementById('narrator'); const narratorText = document.getElementById('narrator-text'); narrator.style.display = 'block'; typeText(narratorText, text, () => { // 打字完成后显示控制按钮 document.querySelector('.controls').style.display = 'flex'; }); } function hideNarrator() { document.getElementById('narrator').style.display = 'none'; } // 更新资源显示 function updateResourcesDisplay() { document.getElementById('gold-value').textContent = gameState.gold; document.getElementById('food-value').textContent = gameState.food; document.getElementById('renown-value').textContent = gameState.renown; document.getElementById('turn-value').textContent = gameState.turn; } // 更新军队显示 function updateArmyDisplay() { document.getElementById('infantry-count').textContent = gameState.army.infantry; document.getElementById('cavalry-count').textContent = gameState.army.cavalry; document.getElementById('archers-count').textContent = gameState.army.archers; document.getElementById('siege-count').textContent = gameState.army.siege; const totalTroops = gameState.army.infantry + gameState.army.cavalry + gameState.army.archers + gameState.army.siege; document.getElementById('total-troops').textContent = totalTroops; } // 招募单位 function recruitUnit(type) { const cost = { infantry: { gold: 5, food: 2 }, cavalry: { gold: 10, food: 4 }, archers: { gold: 7, food: 3 }, siege: { gold: 50, food: 20 } }; if (gameState.gold >= cost[type].gold && gameState.food >= cost[type].food) { gameState.gold -= cost[type].gold; gameState.food -= cost[type].food; const increment = { infantry: 10, cavalry: 5, archers: 8, siege: 1 }; |
qianzixuan @ 2025-09-30 17:38:34
gameState.army[type] += increment[type];
updateResourcesDisplay(); updateArmyDisplay(); // 添加到事件日志 addEventLog(`招募完成: 新增${increment[type]}名${getUnitName(type)}`); } else { showNarrator("陛下,我们的资源不足以招募更多士兵。请先确保有足够的黄金和食物。"); } } // 训练单位 function trainUnit(type) { const cost = { infantry: { gold: 3, food: 1 }, cavalry: { gold: 5, food: 2 }, archers: { gold: 4, food: 1 }, siege: { gold: 20, food: 10 } }; if (gameState.gold >= cost[type].gold && gameState.food >= cost[type].food) { gameState.gold -= cost[type].gold; gameState.food -= cost[type].food; updateResourcesDisplay(); // 添加到事件日志 addEventLog(`训练完成: ${getUnitName(type)}战斗力提升`); } else { showNarrator("陛下,我们的资源不足以进行训练。请确保有足够的黄金和食物。"); } } // 获取单位名称 function getUnitName(type) { const names = { infantry: '步兵', cavalry: '骑兵', archers: '弓箭手', siege: '攻城武器' }; return names[type]; } // 开始战斗 function startBattle() { // 模拟战斗计算 const playerPower = calculateArmyPower(); const enemyPower = Math.floor(playerPower * (0.7 + Math.random() * 0.4)); let playerLosses = 0; let enemyLosses = 0; // 清空战斗日志 const battleLog = document.getElementById('battle-log'); battleLog.innerHTML = ''; // 显示战斗开始信息 addBattleLog("战报: 我军开始向波斯要塞进军..."); // 模拟战斗过程 setTimeout(() => { addBattleLog("我军先锋部队与波斯前哨发生冲突..."); setTimeout(() => { addBattleLog("双方主力部队正在集结..."); setTimeout(() => { if (playerPower > enemyPower) { // 玩家胜利 const victoryMargin = (playerPower - enemyPower) / playerPower; playerLosses = Math.floor(gameState.army.infantry * 0.1 * (1 - victoryMargin)); enemyLosses = Math.floor(enemyPower * 0.7 * (1 + victoryMargin)); // 更新军队 gameState.army.infantry -= playerLosses; if (gameState.army.infantry < 0) gameState.army.infantry = 0; // 获得战利品 const goldGain = Math.floor(enemyLosses * 2.5); const foodGain = Math.floor(enemyLosses * 2); gameState.gold += goldGain; gameState.food += foodGain; gameState.renown += 20; // 添加战斗日志 addBattleLog("我军突破敌方防线!波斯军队开始溃败...", "victory"); addBattleLog(`我军损失: ${playerLosses}人,敌军损失: ${enemyLosses}人`); addBattleLog(`获得战利品: 黄金 +${goldGain}, 食物 +${foodGain}`); // 更新战斗结果显示 document.getElementById('battle-result').innerHTML = ` <p>你的军队与波斯守军激烈交战!</p> <p>马其顿方损失: ${playerLosses} 士兵</p> <p>波斯方损失: ${enemyLosses} 士兵</p> <p class="victory">胜利!你成功占领了波斯要塞</p> <p>获得战利品: 黄金 +${goldGain}, 食物 +${foodGain}</p> `; |
qianzixuan @ 2025-09-30 17:38:48
// 添加到事件日志
addEventLog(`战斗胜利: 击败波斯军队,获得${goldGain}黄金`); // 显示胜利旁白 showNarrator("辉煌的胜利!陛下,您的战略眼光无人能及。波斯要塞现已落入我们手中,通往东方的道路已经打开。"); } else { // 玩家失败 playerLosses = Math.floor(gameState.army.infantry * 0.3); enemyLosses = Math.floor(enemyPower * 0.2); // 更新军队 gameState.army.infantry -= playerLosses; if (gameState.army.infantry < 0) gameState.army.infantry = 0; gameState.renown -= 10; // 添加战斗日志 addBattleLog("我军遭到顽强抵抗!形势不利...", "defeat"); addBattleLog(`我军损失: ${playerLosses}人,敌军损失: ${enemyLosses}人`); addBattleLog("不得不下令撤退..."); // 更新战斗结果显示 document.getElementById('battle-result').innerHTML = ` <p>你的军队与波斯守军激烈交战!</p> <p>马其顿方损失: ${playerLosses} 士兵</p> <p>波斯方损失: ${enemyLosses} 士兵</p> <p class="defeat">战败!你的军队被迫撤退</p> <p>声望: -10</p> `; |
qianzixuan @ 2025-09-30 17:39:07
// 添加到事件日志
addEventLog(`战斗失败: 被波斯军队击败,损失${playerLosses}名士兵`, "defeat"); // 显示失败旁白 showNarrator("陛下,波斯人的防御比预期更坚固。我们需要重新评估战略,加强军队后再作打算。"); } updateResourcesDisplay(); updateArmyDisplay(); // 显示战斗结果模态框 document.getElementById('battle-modal').style.display = 'flex'; }, 2000); }, 2000); }, 2000); } // 侦察敌军 function scoutEnemy() { // 模拟侦察结果 const successChance = 0.7; const success = Math.random() < successChance; addBattleLog("派出侦察队探查敌情..."); setTimeout(() => { if (success) { addBattleLog("侦察成功: 获得了波斯军队的详细布防信息", "event"); showNarrator("陛下,我们的侦察兵带回了宝贵的情报。波斯要塞守军约有200人,防御工事中等,但储备资源丰富。"); } else { addBattleLog("侦察失败: 侦察队被敌人发现并驱赶", "defeat"); showNarrator("陛下,我们的侦察行动被波斯人发现了。他们加强了警戒,短期内可能难以再次侦察。"); } }, 1500); } // 计算军队力量 function calculateArmyPower() { return gameState.army.infantry * 1 + gameState.army.cavalry * 1.5 + gameState.army.archers * 1.2 + gameState.army.siege * 4; } // 添加事件日志(带打字效果) function addEventLog(message, type = 'normal') { const logEntry = document.createElement('div'); logEntry.className = `log-entry ${type}`; document.getElementById('event-log').appendChild(logEntry); typeText(logEntry, message); |
qianzixuan @ 2025-09-30 17:39:29
// 自动滚动到底部
const eventLog = document.getElementById('event-log'); eventLog.scrollTop = eventLog.scrollHeight; } // 添加战斗日志(带打字效果) function addBattleLog(message, type = 'normal') { const logEntry = document.createElement('div'); logEntry.className = `log-entry ${type}`; document.getElementById('battle-log').appendChild(logEntry); typeText(logEntry, message); // 自动滚动到底部 const battleLog = document.getElementById('battle-log'); battleLog.scrollTop = battleLog.scrollHeight; } // 关闭模态框 function closeModal() { document.getElementById('battle-modal').style.display = 'none'; hideNarrator(); } // 初始化游戏 window.onload = initializeGame; </script> </body> </html> |
yuzihao @ 2025-10-01 18:15:52
12
|
chenyuxiang @ 2025-10-01 18:25:09
#include <iostream>
#include <string> #include <unordered_map> using namespace std; class Solution { public: int countValidPurchases(int n, int k, string& flowers) { int result = 0; // 遍历所有可能的连续子串 for (int left = 0; left < n; left++) { unordered_map<char, int> count; // 尝试不同长度的子串 for (int right = left; right < n; right++) { // 统计当前子串中各种花的数量 count[flowers[right]]++; // 检查是否符合条件:每种花恰好k枝 if (isValidPurchase(count, k)) { result++; } } } return result; } private: // 检查当前子串是否符合要求 bool isValidPurchase(unordered_map<char, int>& count, int k) { for (auto& pair : count) { // 如果有品种数量不等于k,返回false if (pair.second != k && pair.second != 0) { return false; } } // 检查是否至少有一种花的数量为k for (auto& pair : count) { if (pair.second == k) { return true; } } return false; } }; int main() { int n, k; string flowers; // 读取输入 cin >> n >> k; cin >> flowers; Solution solution; cout << solution.countValidPurchases(n, k, flowers) << endl; return 0; } |
yuzihao @ 2025-10-02 17:20:56
666
|
dingyonghang @ 2025-10-03 16:03:39
666
|
yuzihao @ 2025-10-03 17:26:04
agdagfda
|
lizhicheng @ 2025-10-03 18:06:48
666
|