shenmiwangye0.1

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>削弱1-3挂机游戏</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
background: linear-gradient(135deg, #0b0c1a 0%, #1a1a3a 100%);
font-family: 'Segoe UI', 'Arial', sans-serif;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
overflow-x: hidden;
}

.container {
width: 100%;
max-width: 1100px;
padding: 30px;
background-color: rgba(10, 15, 30, 0.9);
backdrop-filter: blur(4px);
border-radius: 28px;
box-shadow: 0 25px 45px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);
margin-bottom: 30px;
transition: all 0.2s;
}

.game-title {
text-align: center;
font-size: 2.8rem;
font-weight: bold;
margin-bottom: 25px;
color: #ffcc66;
text-shadow: 0 0 12px #ff6633;
background: linear-gradient(135deg, #ffcc88, #ffaa44);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}

.text-line {
font-size: 2rem;
font-weight: bold;
margin: 20px 0;
padding: 20px;
border-radius: 24px;
transition: all 0.2s ease;
text-align: center;
background: rgba(20, 25, 50, 0.7);
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
letter-spacing: 2px;
}

.random-chars {
display: inline-block;
width: 48px;
text-align: center;
transition: all 0.1s ease;
font-weight: 600;
}

.random-chars.jumping {
animation: jump 0.4s ease infinite alternate;
}

@keyframes jump {
0% { transform: translateY(0px); text-shadow: 0 0 2px cyan; }
100% { transform: translateY(-8px); text-shadow: 0 0 12px gold; }
}

.game-stats {
margin-top: 25px;
padding: 25px;
background: linear-gradient(135deg, #14182f, #1e2340);
border-radius: 24px;
color: #f0f0ff;
border: 1px solid rgba(255,215,0,0.3);
}

.stat-item {
font-size: 1.5rem;
margin: 18px 0;
display: flex;
justify-content: space-between;
align-items: baseline;
flex-wrap: wrap;
padding: 8px 0;
border-bottom: 1px solid rgba(255,255,200,0.2);
}

.stat-label {
color: #ccddee;
font-weight: 600;
}

.stat-value {
color: #ffdd77;
font-weight: bold;
font-family: 'Courier New', monospace;
font-size: 1.4rem;
word-break: break-word;
text-align: right;
}

.hidden-stat {
display: none;
}

.hidden-stat.visible {
display: flex;
}

.note {
font-size: 0.9rem;
color: #bbaaff;
font-style: italic;
margin-top: 6px;
text-align: center;
background: rgba(0,0,0,0.4);
border-radius: 20px;
padding: 5px 12px;
}

.eternal-section, .reality-section {
margin-top: 25px;
padding: 20px;
background: radial-gradient(circle at 10% 30%, #0f212e, #07121c);
border-radius: 24px;
border-left: 5px solid #3bc9db;
display: none;
}

.eternal-section.visible, .reality-section.visible {
display: block;
animation: fadeSlide 0.5s ease;
}

.reality-section {
border-left-color: #ff9966;
background: radial-gradient(circle at 90% 20%, #2a1a2a, #0a0a1a);
}

@keyframes fadeSlide {
from { opacity: 0; transform: translateY(-18px); }
to { opacity: 1; transform: translateY(0); }
}

.section-title {
font-size: 1.7rem;
font-weight: bold;
margin-bottom: 15px;
color: #ffdd99;
text-align: center;
}

.controls {
display: flex;
flex-direction: column;
gap: 20px;
margin-top: 25px;
}

.control-buttons {
display: flex;
gap: 18px;
justify-content: center;
flex-wrap: wrap;
}

.control-btn {
padding: 16px 32px;
font-size: 1.5rem;
background: linear-gradient(135deg, #2a2f4f, #1f253f);
color: white;
border: none;
border-radius: 60px;
cursor: pointer;
font-weight: bold;
transition: 0.2s;
box-shadow: 0 5px 12px rgba(0,0,0,0.3);
}

.control-btn:hover {
transform: translateY(-4px);
filter: brightness(1.08);
}

.control-btn.start {
background: linear-gradient(135deg, #d96633, #ff884d);
box-shadow: 0 4px 15px #ff884d66;
}

.control-btn.save {
background: linear-gradient(135deg, #2c6e9e, #1f8faf);
}

.control-btn.load {
background: linear-gradient(135deg, #2c7a4d, #2aa57c);
}

.control-btn.hard-reset {
background: linear-gradient(135deg, #aa2e2e, #cc5555);
}

.control-btn.reset {
background: linear-gradient(135deg, #5a5e7a, #3d405b);
}

.speed-control {
display: flex;
align-items: center;
gap: 20px;
padding: 15px 20px;
background: rgba(0,0,0,0.6);
border-radius: 60px;
}

.speed-control label {
font-size: 1.3rem;
font-weight: bold;
color: #f0e6a0;
}

.speed-control input {
flex-grow: 1;
height: 8px;
-webkit-appearance: none;
background: linear-gradient(to right, #ff9966, #ffdd77);
border-radius: 10px;
}

.speed-control input::-webkit-slider-thumb {
-webkit-appearance: none;
width: 24px;
height: 24px;
border-radius: 50%;
background: #ffcc88;
cursor: pointer;
border: 2px solid white;
}

.message {
margin-top: 18px;
padding: 12px;
border-radius: 60px;
text-align: center;
font-weight: bold;
animation: messageFade 2s ease forwards;
display: none;
}

.message.success { background: #1f802fcc; color: #d4ffb0; border-left: 6px solid #88ff88; display: block; }
.message.error { background: #a02f2fcc; color: #ffc0c0; border-left: 6px solid #ff8888; display: block; }
.message.info { background: #2f5399cc; color: #cceeff; border-left: 6px solid #88aaff; display: block; }

@keyframes messageFade {
0% { opacity: 0; transform: translateY(-10px); }
15% { opacity: 1; transform: translateY(0); }
80% { opacity: 1; }
100% { opacity: 0; visibility: hidden; }
}

.hotkeys {
display: flex;
justify-content: center;
gap: 24px;
flex-wrap: wrap;
margin-top: 10px;
color: #ccc;
}

.hotkey kbd {
background: #222;
padding: 4px 12px;
border-radius: 8px;
color: #ffcc77;
margin-left: 6px;
font-weight: bold;
}

.save-status {
margin-top: 20px;
background: rgba(0,0,0,0.4);
border-radius: 20px;
padding: 14px;
text-align: center;
}

@media (max-width: 720px) {
.text-line { font-size: 1.3rem; }
.control-btn { font-size: 1.2rem; padding: 10px 20px; }
.stat-item { font-size: 1.2rem; flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>
</head>
<body>
<div class="container">
<h1 class="game-title">⚡ 削弱1-3 · deepseek重制版 ⚡</h1>

<div class="text-line" id="line1"></div>
<div class="text-line" id="line2"></div>
<div class="text-line" id="line3"></div>

<div class="message" id="message"></div>

<div class="game-stats">
<div class="stat-item"><span class="stat-label">📊 实力等级:</span><span class="stat-value" id="tierValue">Tier 10</span></div>
<div class="stat-item hidden-stat" id="infinityStat"><span class="stat-label">♾️ 无限点数:</span><span class="stat-value" id="infinityValue">0</span></div>
<div class="note hidden-stat" id="infinityNote"></div>
<div class="stat-item"><span class="stat-label">⚡ 每秒总倍率:</span><span class="stat-value" id="multiplierValue">2.00×</span></div>
<div class="stat-item"><span class="stat-label">✨ 每次重置获得:</span><span class="stat-value" id="gainValue">1</span></div>
</div>

<div class="eternal-section" id="eternalSection">
<div class="section-title">🌀 永恒领域</div>
<div class="stat-item"><span class="stat-label">永恒点数:</span><span class="stat-value" id="eternalValue">0</span></div>
<div class="note" id="eternalNote"></div>
</div>

<div class="reality-section" id="realitySection">
<div class="section-title">🔮 现实机器 [重大重置]</div>
<div class="stat-item"><span class="stat-label">需要 1e9 永恒点数 解锁重置</span><span class="stat-value" id="realityRequire">1,000,000,000</span></div>
<div class="stat-item"><span class="stat-label">现实机器加成 → 永恒获取倍率:</span><span class="stat-value" id="realityBonus">1.00x</span></div>
<div class="note">⚙️ 重置后获得现实精华,强化永恒生成公式 sqrt(n³/2+2) 乘算现实倍率</div>
</div>

<div class="save-status">
<span>💾 存档: <span id="lastSaveTime">无</span> | ⏱️ 时长: <span id="playTime">0秒</span></span>
</div>

<div class="controls">
<div class="control-buttons">
<button class="control-btn start" id="startBtn">▶ 开始削弱1-3</button>
<button class="control-btn save" id="saveBtn">💾 保存</button>
<button class="control-btn load" id="loadBtn">📂 加载</button>
<button class="control-btn reset" id="resetBtn">🔄 重置</button>
<button class="control-btn hard-reset" id="hardResetBtn">⚠️ 硬重置</button>
</div>
<div class="speed-control">
<label>⚙️ 速度倍率: <span id="speedValue">5</span>x</label>
<input type="range" id="speedControl" min="1" max="1000" value="5">
</div>
</div>
</div>
<div class="hotkeys">
<span class="hotkey">开始/暂停 <kbd>空格</kbd></span>
<span class="hotkey">保存 <kbd>S</kbd></span>
<span class="hotkey">加载 <kbd>L</kbd></span>
<span class="hotkey">硬重置 <kbd>H</kbd></span>
<span class="hotkey">⬇️ 下滑开始</span>
</div>

<script>
(function(){
let gameState = {
isRunning: false,
tier: 10,
maxTier: 1.798e308,
infinityPoints: 0,
eternalPoints: 0,
realityPoints: 0,
baseMultiplier: 2,
infinityMultiplier: 1,
eternalMultiplier: 1,
gainPerReset: 1,
lastUpdateTime: 0,
gameSpeed: 5,
startTime: Date.now(),
lastSaveTime: null,
realityMultiplier: 1
};

const line1 = document.getElementById('line1');
const line2 = document.getElementById('line2');
const line3 = document.getElementById('line3');
const messageBox = document.getElementById('message');
const startBtn = document.getElementById('startBtn');
const saveBtn = document.getElementById('saveBtn');
const loadBtn = document.getElementById('loadBtn');
const resetBtn = document.getElementById('resetBtn');
const hardResetBtn = document.getElementById('hardResetBtn');
const speedControl = document.getElementById('speedControl');
const speedValue = document.getElementById('speedValue');
const tierValue = document.getElementById('tierValue');
const infinityStat = document.getElementById('infinityStat');
const infinityValue = document.getElementById('infinityValue');
const infinityNote = document.getElementById('infinityNote');
const multiplierValue = document.getElementById('multiplierValue');
const gainValue = document.getElementById('gainValue');
const eternalSection = document.getElementById('eternalSection');
const eternalValueSpan = document.getElementById('eternalValue');
const eternalNoteSpan = document.getElementById('eternalNote');
const realitySection = document.getElementById('realitySection');
const realityBonusSpan = document.getElementById('realityBonus');
const lastSaveTimeSpan = document.getElementById('lastSaveTime');
const playTimeSpan = document.getElementById('playTime');

const line1Text = '冷牛排和你的真理1-3';
const line2Text = '〖乱码〗〖乱码〗NIWANLE〖乱码〗〖乱码〗';
const line3Text = 'Rehardenlessly口味';

function showMessage(text, type = 'info') {
messageBox.textContent = text;
messageBox.className = ‘message ${type}`;
messageBox.style.display = ’block';
setTimeout(() => { messageBox.style.display = 'none'; }, 2000);
}

function formatTime(timestamp) {
if (!timestamp) return '无';
const d = new Date(timestamp);
return d.toLocaleString('zh-CN');
}

function formatPlayTime(seconds) {
if(seconds < 60) return `${seconds}秒`;
if(seconds < 3600) return `${Math.floor(seconds/60)}分${seconds%60}秒`;
const h = Math.floor(seconds/3600);
const m = Math.floor((seconds%3600)/60);
return `${h}时${m}分`;
}

function updateSaveStatusUI() {
const elapsed = Math.floor((Date.now() - gameState.startTime) / 1000);
playTimeSpan.textContent = formatPlayTime(elapsed);
lastSaveTimeSpan.textContent = formatTime(gameState.lastSaveTime);
}

function getRandomChar() {
const ranges = [[0x21,0x7E],[0xA1,0xFF],[0x370,0x3FF],[0x4E00,0x9FFF],[0x30A0,0x30FF]];
const r = ranges[Math.floor(Math.random()*ranges.length)];
const cp = Math.floor(Math.random()*(r[1]-r[0]+1))+r[0];
return String.fromCodePoint(cp);
}

function parseLine2() {
const parts = line2Text.split('〖乱码〗');
const flags = [];
for(let i=0;i<parts.length-1;i++){ flags.push(false, true); }
flags.push(false);
return { parts, hasRandom: flags };
}

function buildLines() {
line1.innerHTML = ‘<span style="color:#ffaa66">${line1Text}</span>`;
const { parts, hasRandom } = parseLine2();
line2.innerHTML = ’';
let idx=0;
for(let i=0;i<hasRandom.length;i++){
if(hasRandom[i]){
const span = document.createElement('span');
span.className = 'random-chars';
span.textContent = getRandomChar();
span.dataset.random = 'true';
span.style.fontSize = (0.5+Math.random()*0.7)+'em';
span.style.color = ‘hsl(${(idx*17)%360}, 100%, 65%)`;
line2.appendChild(span);
idx++;
} else {
const text = parts[Math.floor(i/2)] || ’';
for(let ch of text){
const cspan = document.createElement('span');
cspan.textContent = ch;
cspan.style.color = `hsl(${(idx*19)%360}, 80%, 70%)`;
line2.appendChild(cspan);
idx++;
}
}
}
line3.innerHTML = `<span style="color:#ffbb77">${line3Text}</span>`;
}

function updateRandomCharsAndColors() {
const randoms = line2.querySelectorAll('span[data-random="true"]');
for(let span of randoms){
span.textContent = getRandomChar();
if(gameState.gameSpeed > 100 && !span.classList.contains('jumping')) span.classList.add('jumping');
else if(gameState.gameSpeed <=100) span.classList.remove('jumping');
const hue = (Date.now()/25 + parseInt(span.dataset.index || 0)*13)%360;
span.style.color = ‘hsl(${hue}, 100%, 65%)`;
}
const allSpans = line2.querySelectorAll(’span');
allSpans.forEach((sp,ix)=>{
if(!sp.dataset.random) sp.style.color = `hsl(${(Date.now()/20 + ix*9)%360}, 80%, 70%)`;
});
}

function formatLarge(num){
if(num >= 1e12) return num.toExponential(4);
if(num>=1e6) return num.toExponential(3);
return Math.floor(num).toLocaleString();
}

function calculateInfinityMultiplier(){
if(gameState.infinityPoints === 0) return 1;
return Math.log2(Math.pow(gameState.infinityPoints, 3) + 2);
}

function calculateEternalMultiplier(){
if(gameState.eternalPoints === 0) return 1;
return Math.log2(Math.pow(gameState.eternalPoints, 3) + 2);
}

function calculateRealityEternalGenBonus(){
if(gameState.realityPoints === 0) return 1;
return 1 + (Math.sqrt(Math.pow(gameState.realityPoints, 1.5) + 5) / 20);
}

function calculateEternalPointsProduction(){
let baseFormula = Math.sqrt(Math.pow(gameState.eternalPoints, 3) / 2 + 2);
if(baseFormula < 0.1) baseFormula = 0.1;
const realityBonus = calculateRealityEternalGenBonus();
return baseFormula * realityBonus;
}

function calculateGainPerReset(){
if(gameState.infinityPoints === 0) return 1;
return (gameState.infinityPoints / 1.5) + 1;
}

function convertInfinityToEternalAuto(){
if(gameState.infinityPoints >= 1e9){
let eternalGain = Math.floor(gameState.infinityPoints / 1e9);
if(eternalGain <= 0) eternalGain = 1;
const bonusGen = calculateEternalPointsProduction();
let finalGain = Math.floor(eternalGain * (1 + bonusGen / 50));
if(finalGain < 1) finalGain = 1;
gameState.eternalPoints += finalGain;
gameState.infinityPoints = 0;
gameState.gainPerReset = 1;
return true;
}
return false;
}

function handleRealityMachine(){
if(gameState.eternalPoints >= 1e9 && !gameState.realityTriggeredFlag){
gameState.realityPoints += 1;
const oldEternal = gameState.eternalPoints;
gameState.eternalPoints = 0;
gameState.infinityPoints = 0;
gameState.tier = 10;
gameState.gainPerReset = 1;
gameState.realityMultiplier = calculateRealityEternalGenBonus();
showMessage(‘✨ 现实机器启动! 你获得了 +1 现实精华,永恒生成公式得到强化 ✨`, ’success');
updateGameDisplay();
}
}

function calculateTotalMultiplier(){
let infMult = calculateInfinityMultiplier();
let eMult = 1;
if(gameState.eternalPoints > 0 || gameState.realityPoints > 0){
eMult = calculateEternalMultiplier();
}
let finalMult = gameState.baseMultiplier * infMult * eMult;
if(finalMult < 1) finalMult = 1;
return finalMult;
}

function updateGameDisplay(){
tierValue.textContent = ‘Tier ${formatLarge(gameState.tier)}`;
if(gameState.infinityPoints > 0){
infinityStat.classList.add(’visible');
infinityNote.classList.add('visible');
infinityValue.textContent = formatLarge(gameState.infinityPoints);
let n = 308 + Math.log2(gameState.infinityPoints * gameState.infinityPoints) * 308;
infinityNote.textContent = ‘✨ 真理扭曲 · Tier×1e${n.toFixed(2)}`;
} else {
infinityStat.classList.remove(’visible');
infinityNote.classList.remove('visible');
}
const totalMult = calculateTotalMultiplier();
multiplierValue.textContent = `${totalMult.toExponential(4)}×`;
gainValue.textContent = formatLarge(gameState.gainPerReset);

if(gameState.eternalPoints > 0){
eternalSection.classList.add('visible');
eternalValueSpan.textContent = formatLarge(gameState.eternalPoints);
const eternalPowNote = Math.log10(gameState.eternalPoints+1)+1;
const extraStr = ‘基于你的永恒点数,你额外削弱了1-3 Tier e(10000+${eternalPowNote.toFixed(4)})`;
eternalNoteSpan.innerHTML = `🌀 永恒加成: log₂(n³+2)=${calculateEternalMultiplier().toFixed(4)}x | ${extraStr}`;
} else {
eternalSection.classList.remove(’visible');
}

if(gameState.realityPoints > 0 || gameState.eternalPoints >= 1e9){
realitySection.classList.add('visible');
const bonus = calculateRealityEternalGenBonus();
realityBonusSpan.textContent = ‘${bonus.toFixed(4)}x`;
} else {
realitySection.classList.remove(’visible');
}
updateSaveStatusUI();
}

function gameLoop(){
if(!gameState.isRunning) return;
const now = Date.now();
const intervalMs = 1000 / gameState.gameSpeed;
if(now - gameState.lastUpdateTime < intervalMs) return;
gameState.lastUpdateTime = now;

gameState.infinityMultiplier = calculateInfinityMultiplier();
gameState.eternalMultiplier = (gameState.eternalPoints > 0 || gameState.realityPoints > 0) ? calculateEternalMultiplier() : 1;
const totalMult = calculateTotalMultiplier();
gameState.tier *= totalMult;

if(gameState.tier >= gameState.maxTier){
gameState.tier = 10;
gameState.infinityPoints += gameState.gainPerReset;
gameState.gainPerReset = calculateGainPerReset();
const changed = convertInfinityToEternalAuto();
if(changed) updateGameDisplay();
handleRealityMachine();
gameState.infinityMultiplier = calculateInfinityMultiplier();
gameState.eternalMultiplier = (gameState.eternalPoints > 0 || gameState.realityPoints > 0) ? calculateEternalMultiplier() : 1;
}
updateGameDisplay();
}

function startGame(){ if(!gameState.isRunning){ gameState.isRunning=true; gameState.lastUpdateTime=Date.now(); startBtn.textContent='⏳ 游戏中…'; startBtn.classList.remove('start'); startBtn.classList.add('save'); updateGameDisplay(); } }
function stopGame(){ if(gameState.isRunning){ gameState.isRunning=false; startBtn.textContent='▶ 开始削弱1-3'; startBtn.classList.remove('save'); startBtn.classList.add('start'); } }

function resetGame(){
stopGame();
const keepSaveTime = gameState.lastSaveTime;
gameState = {
isRunning: false, tier:10, maxTier:1.798e308, infinityPoints:0, eternalPoints:0, realityPoints:0,
baseMultiplier:2, infinityMultiplier:1, eternalMultiplier:1, gainPerReset:1,
lastUpdateTime:0, gameSpeed:5, startTime:Date.now(), lastSaveTime:keepSaveTime,
realityMultiplier:1
};
speedControl.value = 5;
speedValue.textContent='5';
gameState.gameSpeed = 5;
updateGameDisplay();
showMessage('游戏已重置 (永恒/现实归零)', 'info');
}

function hardReset(){
if(confirm('⚡ 硬重置会将当前状态存档并重置所有数据 ⚡')){
saveGameToLocal();
setTimeout(()=>{
stopGame();
gameState = {
isRunning: false, tier:10, maxTier:1.798e308, infinityPoints:0, eternalPoints:0, realityPoints:0,
baseMultiplier:2, infinityMultiplier:1, eternalMultiplier:1, gainPerReset:1,
lastUpdateTime:0, gameSpeed:5, startTime:Date.now(), lastSaveTime:null,
realityMultiplier:1
};
speedControl.value=5;
speedValue.textContent='5';
gameState.gameSpeed=5;
updateGameDisplay();
showMessage('硬重置完成!旧状态已存档', 'info');
},50);
}
}

function saveGameToLocal(){
try{
const saveObj = {
version:"Reality_v10",
state:{
tier:gameState.tier, infinityPoints:gameState.infinityPoints, eternalPoints:gameState.eternalPoints,
realityPoints:gameState.realityPoints, baseMultiplier:gameState.baseMultiplier,
gainPerReset:gameState.gainPerReset, gameSpeed:gameState.gameSpeed,
startTime:gameState.startTime, lastSaveTime:Date.now()
}
};
localStorage.setItem('Rehardenlessly_WeakenSave', JSON.stringify(saveObj));
gameState.lastSaveTime = Date.now();
updateSaveStatusUI();
showMessage('✓ 存档已保存 (Rehardenlessly_)', 'success');
}catch(e){ showMessage('保存失败','error'); }
}

function loadGameFromLocal(){
try{
const raw = localStorage.getItem('Rehardenlessly_WeakenSave');
if(!raw){ showMessage('没有找到存档', 'error'); return false; }
const data = JSON.parse(raw);
if(data.version !== "Reality_v10"){ showMessage('旧存档版本不兼容, 请硬重置后重试', 'error'); return false; }
const s = data.state;
gameState.tier = s.tier ?? 10;
gameState.infinityPoints = s.infinityPoints ?? 0;
gameState.eternalPoints = s.eternalPoints ?? 0;
gameState.realityPoints = s.realityPoints ?? 0;
gameState.baseMultiplier = s.baseMultiplier ?? 2;
gameState.gainPerReset = s.gainPerReset ?? 1;
gameState.gameSpeed = s.gameSpeed ?? 5;
gameState.startTime = s.startTime ?? Date.now();
gameState.lastSaveTime = s.lastSaveTime ?? null;
gameState.isRunning = false;
speedControl.value = gameState.gameSpeed;
speedValue.textContent = gameState.gameSpeed;
updateGameDisplay();
showMessage('✦ 加载成功 现实机器就绪 ✦', 'success');
return true;
}catch(e){ showMessage('加载失败', 'error'); return false; }
}

function toggleStart(){ if(gameState.isRunning) stopGame(); else startGame(); }

function init(){
buildLines();
setInterval(()=>{
updateRandomCharsAndColors();
gameLoop();
}, 70);
window.addEventListener('wheel', (e) => { if(e.deltaY > 0 && !gameState.isRunning) startGame(); });
document.addEventListener('keydown', (e)=>{
if(e.code === 'Space'){ e.preventDefault(); toggleStart(); }
else if(e.code === 'KeyS'){ e.preventDefault(); saveGameToLocal(); }
else if(e.code === 'KeyL'){ e.preventDefault(); loadGameFromLocal(); }
else if(e.code === 'KeyH'){ e.preventDefault(); hardReset(); }
else if(e.code === 'KeyR'){ e.preventDefault(); resetGame(); }
});
startBtn.onclick = toggleStart;
saveBtn.onclick = () => saveGameToLocal();
loadBtn.onclick = () => loadGameFromLocal();
resetBtn.onclick = () => resetGame();
hardResetBtn.onclick = () => hardReset();
speedControl.addEventListener('input', ()=>{
let val = parseInt(speedControl.value);
gameState.gameSpeed = val;
speedValue.textContent = val;
});
setTimeout(()=>{
if(!loadGameFromLocal()){
updateGameDisplay();
showMessage('新世界欢迎你,削弱真理1-3!', 'info');
}
}, 200);
}

init();
})();
</script>
</body>
</html>

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License