🎮ArcadeLab

ORION — כוכב הלכת האבוד

by AtomicCoder59
243 lines22.1 KB
▶ Play

<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>ORION — כוכב הלכת האבוד</title>
<style>
*{box-sizing:border-box}
:root{--c:#65fff0;--g:#68ffad;--gold:#ffd166;--bg:#050916}
body{margin:0;background:radial-gradient(ellipse at top,#173956,#080e20 60%,#030610);color:#effaff;font-family:Arial,sans-serif;min-height:100vh}
button,input{font:inherit}
button{cursor:pointer;color:inherit}
button:focus-visible,input:focus-visible{outline:2px solid var(--gold)}
.app{max-width:1300px;margin:auto;padding:14px}
header,.panel{background:#0a172beF;border:1px solid #65fff033;border-radius:16px;padding:14px;margin-bottom:12px;box-shadow:0 10px 30px #0004}
header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
h1{font-size:clamp(19px,4vw,29px);margin:0;color:var(--c)}
h2{font-size:15px;margin:0 0 12px;color:var(--gold)}
small{color:#9db8d4}
.stats{display:flex;gap:8px;flex-wrap:wrap}
.stat{background:#102641;padding:9px 12px;border-radius:10px;font-size:12px}
.stat b{color:var(--c)}
.layout{display:grid;grid-template-columns:1.4fr .8fr;gap:12px}
.scene{height:440px;position:relative;overflow:hidden;border:1px solid #65fff055;border-radius:16px;background:linear-gradient(#07152c,#103653 60%,#081321 61%,#030712);isolation:isolate}
.scene:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.8%,#65fff033 50%,transparent 50.2%),linear-gradient(0deg,transparent 49.8%,#65fff015 50%,transparent 50.2%);background-size:100% 100%;z-index:-1}
.planet{position:absolute;top:25%;left:9%;width:65px;height:65px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#b6fff5,#2984bb 45%,#10244c);box-shadow:0 0 40px #51ccff66}
.door{position:absolute;bottom:39%;left:40%;width:22%;height:36%;border:4px solid #27566d;border-bottom:0;border-radius:12px 12px 0 0;background:linear-gradient(90deg,#07101e,#173953,#07101e);box-shadow:inset 0 0 20px #000}
.console{position:absolute;right:9%;bottom:38%;width:19%;height:20%;border:2px solid #277a8a;border-radius:8px;background:linear-gradient(145deg,#1b4c65,#071426)}
.console:after{content:"●  ●  ●";position:absolute;bottom:7px;left:0;right:0;text-align:center;color:var(--c)}
.sceneTitle{position:absolute;top:12px;right:12px;background:#030a17eF;padding:10px;border:1px solid #65fff055;border-radius:10px;max-width:80%}
.sceneTitle strong{display:block;color:var(--c);margin-bottom:5px}
#hotspots button{position:absolute;transform:translate(-50%,-50%);width:48px;height:48px;border-radius:14px;border:1px solid var(--c);background:#06243aeF;box-shadow:0 0 20px #00ffe533;font-size:23px}
#hotspots button.done{border-color:var(--g);background:#10452e}
.bottom{position:absolute;bottom:10px;right:10px;left:10px;display:flex;justify-content:space-between;gap:8px;align-items:center}
.btn{padding:9px 12px;border-radius:9px;background:#102741;border:1px solid #65fff044;font-size:12px}
.btn:hover{border-color:var(--c)}
.primary{background:linear-gradient(120deg,var(--c),#63aaff);color:#06101c;font-weight:bold;border:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.tabs button.active{border-color:var(--c);color:var(--c)}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.card{position:relative;text-align:right;background:#0b1b30;border:1px solid #29445c;border-radius:12px;padding:12px;min-width:0}
.card:hover{border-color:var(--c)}
.card.done{border-color:#38bd89;background:#0c3029}
.card strong{display:block;font-size:12px}
.card small{display:block;margin-top:5px;font-size:10px}
.card span{font-size:23px;float:right;margin-left:10px}
.progress{height:7px;background:#1b2d45;border-radius:8px;overflow:hidden;margin:10px 0}
#bar{height:100%;width:0;background:linear-gradient(90deg,#00d8bd,var(--g));transition:.3s}
.map{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.map button{min-height:65px;border:1px solid #29445c;background:#0a1c31;border-radius:10px;font-size:12px}
.map button.current{border-color:var(--gold);color:var(--gold)}
.map button.done{border-color:var(--g);color:var(--g)}
.log{max-height:190px;overflow:auto;font-size:11px;line-height:1.5}
.log div{padding:8px;border-right:2px solid var(--c);background:#061326;margin-bottom:6px;border-radius:5px}
#inventory{display:flex;flex-wrap:wrap;gap:6px;font-size:11px}
.item{padding:7px 9px;border-radius:8px;background:#152d43;border:1px solid #42627c}
.modalbg{position:fixed;inset:0;background:#01040de8;display:none;align-items:center;justify-content:center;padding:12px;z-index:10}
.modalbg.show{display:flex}
.modal{width:min(520px,100%);max-height:90vh;overflow:auto;padding:19px;background:linear-gradient(145deg,#112641,#07101f);border:1px solid #65fff077;border-radius:17px;box-shadow:0 20px 70px #000}
.modal h2{font-size:21px}
.modal p{font-size:14px;line-height:1.7;color:#d0e7fa}
input{width:100%;background:#030b17;color:white;border:1px solid #42627c;border-radius:9px;padding:12px;margin:8px 0}
.options{display:grid;gap:8px}
.options button{padding:12px;text-align:right;border-radius:9px;background:#10243b;border:1px solid #294b67}
.options button:hover{border-color:var(--c)}
.feedback{min-height:20px;font-size:12px;margin:9px 0}
.good{color:var(--g)}.bad{color:#ff8196}
.flashroom{height:260px;background:#01040a;border:1px solid #36516a;border-radius:12px;position:relative;overflow:hidden;touch-action:pan-y}
.flashroom button{position:absolute;background:transparent;border:0;font-size:25px;filter:brightness(.18);opacity:.4}
.flashroom button.found{filter:none;opacity:1;text-shadow:0 0 20px var(--gold)}
.memory{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.tile{height:60px;background:#10243b;border:1px solid #36516a;border-radius:9px;font-size:22px}
.tile.open,.tile.matched{background:#10473b;border-color:var(--g)}
footer{font-size:10px;color:#819cb9;text-align:center;padding:14px}
@media(max-width:800px){.layout{grid-template-columns:1fr}.scene{height:390px}}
@media(max-width:440px){.app{padding:7px}.grid{gap:6px}.card{padding:9px}.scene{height:360px}.map button{font-size:10px}}
</style>
</head>
<body>
<div class="app">
<header>
 <div><h1>✦ ORION: כוכב הלכת האבוד</h1><small>חדר בריחה מדעי · פרוטוקול חירום 07</small></div>
 <div class="stats">
  <div class="stat">משימות: <b id="count">0/10</b></div>
  <div class="stat">זמן: <b id="clock">00:00</b></div>
  <div class="stat">אנרגיה: <b id="energy">100%</b></div>
 </div>
</header>
<div class="layout">
<main>
<section class="panel">
<h2>◉ תצוגת התחנה</h2>
<div class="scene">
<div class="planet"></div><div class="door"></div><div class="console"></div>
<div class="sceneTitle"><strong id="roomTitle">מעבדת המחקר</strong><small id="roomDesc">חקרו את החדרים, אספו רמזים ושחזרו את מערכת השיגור.</small></div>
<div id="hotspots"></div>
<div class="bottom"><small id="sceneTip">לחצו על האובייקטים כדי לחקור</small><button class="btn" onclick="openFlash()">🔦 פנס</button></div>
</div>
<div class="tabs" id="tabs"></div>
</section>
<section class="panel">
<h2>▣ כרטיסיות משימה</h2>
<div><small id="progressText">0% הושלם</small><div class="progress"><div id="bar"></div></div></div>
<div class="grid" id="missions"></div>
</section>
</main>
<aside>
<section class="panel">
<h2>⌖ מפת התחנה</h2>
<div class="map" id="map"></div>
<small>זהב = מיקום נוכחי · ירוק = משימה הושלמה</small>
</section>
<section class="panel">
<h2>🎒 תיק ציוד</h2><div id="inventory"><small>עדיין לא נאספו פריטים.</small></div>
</section>
<section class="panel">
<h2>▤ יומן אירועים</h2><div class="log" id="log"><div>מערכת ORION הופעלה. עליכם לשגר את החללית לפני שהאנרגיה תיגמר.</div></div>
</section>
<section class="panel">
<h2>פעולות מערכת</h2>
<button class="btn" onclick="hint()">💡 רמז</button>
<button class="btn" onclick="briefing()">📟 תדריך</button>
<button class="btn" onclick="resetGame()">↻ איפוס</button>
</section>
</aside>
</div>
<footer>ORION RESEARCH STATION · BUILD 07.4 · כל המערכות בשליטתכם</footer>
</div>
<div class="modalbg" id="modalbg" onclick="if(event.target===this)closeModal()"><div class="modal" id="modal"></div></div>

<script>
const $=id=>document.getElementById(id);
const rooms=[
{id:'lab',name:'מעבדת המחקר',desc:'מסופים, דגימות והולוגרמות.',spots:[['computer',25,57,'💻','מחשב',0],['samples',57,69,'🧬','דגימות',1],['planet',14,36,'🪐','הולוגרמה',2]]},
{id:'control',name:'חדר הבקרה',desc:'מערכות התקשורת והחשמל.',spots:[['antenna',28,55,'📡','אנטנה',3],['panel',70,65,'🎛️','לוח בקרה',4]]},
{id:'dark',name:'המסדרון החשוך',desc:'כמעט אין אור. השתמשו בפנס כדי לגלות את הסימנים.',spots:[['door',50,58,'🚪','דלת מסתורית',5]]},
{id:'engine',name:'חדר המנועים',desc:'ליבת האנרגיה לא יציבה.',spots:[['core',32,58,'⚡','ליבה',6],['pipes',75,51,'🔧','קירור',7]]},
{id:'storage',name:'מחסן ציוד',desc:'ארגז חירום נעול.',spots:[['crate',30,59,'📦','ארגז',8]]},
{id:'comms',name:'מרכז תקשורת',desc:'הודעה אחרונה מהצוות.',spots:[['radio',50,58,'📻','משדר',9]]},
{id:'observatory',name:'מצפה הכוכבים',desc:'הדרך אל כוכב הלכת האבוד.',spots:[['scope',54,53,'🔭','טלסקופ',2]]},
{id:'vault',name:'כספת הנתונים',desc:'הקוד הסופי מחכה לכם.',spots:[['vault',50,58,'🔐','כספת',8]]},
{id:'launch',name:'סיפון השיגור',desc:'השלימו את כל המשימות כדי לשגר.',spots:[['rocket',50,58,'🚀','לוח שיגור',9]]}
];
const missions=[
{title:'המסוף הנעול',icon:'💻',room:'lab',spot:'computer',type:'input',q:'פתרו לפי סדר פעולות החשבון: (18 ÷ 3) × 4 + 8',a:'32',hint:'תחילה חילוק, אחר כך כפל, ולבסוף חיבור.',item:'🪪 כרטיס גישה',story:'המחשב הראשי נעול. פענחו את התרגיל כדי לשחזר את יומן המחקר.'},
{title:'קוד הדגימות',icon:'🧬',room:'lab',spot:'samples',type:'choice',q:'איזו טמפרטורה נמצאת באמצע בסדר מהקרה לחמה: ‎−4°, 12°, 0°?',opts:['−4°','0°','12°','אי אפשר לדעת'],a:1,hint:'מספר שלילי קטן מאפס, ואפס קטן מ־12.',item:'💎 קריסטל כחול',story:'סדרו את הדגימות כדי למצוא את הקריסטל.'},
{title:'מפת הכוכבים',icon:'🪐',room:'observatory',spot:'scope',type:'input',q:'החללית נמצאת בנקודה (2,3). היא נעה 4 ימינה ו־2 למטה. מה הנקודה החדשה? כתבו x,y',a:'6,1',hint:'ימינה מוסיפים ל־x; למטה מפחיתים מ־y.',item:'🗺️ מפת ניווט',story:'שחזרו את נתיב הטיסה אל כוכב הלכת.'},
{title:'תדר החירום',icon:'📡',room:'control',spot:'antenna',type:'input',q:'השלימו את הסדרה: 3, 6, 12, 24, __',a:'48',hint:'כל מספר מתקבל מהכפלת המספר הקודם.',item:'📡 תדר חירום',story:'האנטנה קולטת סדרת אותות. גלו את התדר הבא.'},
{title:'לוח החשמל',icon:'🎛️',room:'control',spot:'panel',type:'choice',q:'שלושה מכשירים צורכים 18, 27 ו־35 יחידות אנרגיה. כמה הם צורכים יחד?',opts:['70','80','90','75'],a:1,hint:'חברו 18 + 27 ואז הוסיפו 35.',item:'🔋 תא אנרגיה',story:'החזירו את החשמל בלי להעמיס על המערכת.'},
{title:'המסדרון החשוך',icon:'🔦',room:'dark',spot:'door',type:'flash',q:'השתמשו בפנס וגלו שלושה סמלים נסתרים בחדר החשוך.',a:'3',hint:'הזיזו את העכבר או געו באזור החשוך וחפשו סמלים.',item:'🗝️ מפתח מסתורי',story:'החשמל במסדרון כבה. רק פנס החיפוש יכול לגלות את הקוד.'},
{title:'רצף ליבת המנוע',icon:'⚡',room:'engine',spot:'core',type:'memory',q:'זכרו את זוגות הסמלים והתאימו ביניהם.',a:'4',hint:'הפכו שני קלפים בכל תור וחפשו זוגות זהים.',item:'⚡ ליבת אנרגיה',story:'ייצבו את הליבה באמצעות משחק זיכרון.'},
{title:'צינורות הקירור',icon:'🔧',room:'engine',spot:'pipes',type:'choice',q:'ארבעה צינורות מקררים 6 מעלות כל אחד. הטמפרטורה ירדה מ־38°. מה הטמפרטורה עכשיו?',opts:['14°','24°','32°','20°'],a:1,hint:'ארבע כפול שש הוא 24. הפחיתו 24 מ־38.',item:'🧰 כלי תיקון',story:'חשבו את הירידה בטמפרטורה כדי לייצב את המנוע.'},
{title:'מנעול המחסן',icon:'🔐',room:'storage',spot:'crate',type:'lock',q:'הקלידו את קוד המנעול בן 3 הספרות: 3 × 7, ואז מספר זוגי קטן מ־5, ואז מספר ראשוני בין 4 ל־8.',a:'212',hint:'הספרה הראשונה היא 21? שימו לב: הקוד דורש ספרה אחת לכל רמז. חשבו מחדש: 3×7 הוא 21, ולכן השתמשו בספרת האחדות.',item:'🧩 שבב נתונים',story:'המנעול בנוי משלוש ספרות: ספרת האחדות של 3×7, מספר זוגי קטן מ־5, ומספר ראשוני בין 4 ל־8.'},
{title:'הודעת השיגור',icon:'📻',room:'comms',spot:'radio',type:'input',q:'הודעת הקפטן: כמה צלעות יש לשני משושים ועוד ריבוע אחד יחד?',a:'16',hint:'למשושה יש 6 צלעות ולריבוע 4. יש שני משושים וריבוע.',item:'📜 פקודת שיגור',story:'פענחו את הודעת הקפטן כדי להפעיל את רצף השיגור.'}
];
let current='lab',done=new Set(),visited=new Set(),items=[],energy=100,start=Date.now(),flashFound=new Set(),memoryState={};
let toastTimer;
function log(s){let d=document.createElement('div');d.textContent=s;$('log').prepend(d)}
function openModal(html){$('modal').innerHTML=html;$('modalbg').classList.add('show')}
function closeModal(){$('modalbg').classList.remove('show')}
function roomBy(id){return rooms.find(r=>r.id===id)}
function go(id){current=id;render();log('נכנסתם אל '+roomBy(id).name)}
function render(){
 const r=roomBy(current);$('roomTitle').textContent=r.name;$('roomDesc').textContent=r.desc;
 $('hotspots').innerHTML=r.spots.map(s=>`<button style="left:${s[1]}%;top:${s[2]}%" class="${done.has(s[5])?'done':''}" onclick="inspect('${s[0]}')">${s[3]}</button>`).join('');
 $('tabs').innerHTML=rooms.map(x=>`<button class="btn ${x.id===current?'active':''}" onclick="go('${x.id}')">${x.name}</button>`).join('');
 $('map').innerHTML=rooms.map((x,i)=>`<button class="${x.id===current?'current':''} ${x.spots.some(s=>done.has(s[5]))?'done':''}" onclick="go('${x.id}')">${x.spots.some(s=>done.has(s[5]))?'✓ ':''}${x.name}</button>`).join('');
 $('missions').innerHTML=missions.map((m,i)=>`<button class="card ${done.has(i)?'done':''}" onclick="openMission(${i})"><span>${m.icon}</span><strong>${done.has(i)?'✓ ':''}${i+1}. ${m.title}</strong><small>${done.has(i)?'הושלמה':'לחצו לפתיחת הכרטיס'}</small></button>`).join('');
 $('count').textContent=done.size+'/10';$('bar').style.width=done.size*10+'%';$('progressText').textContent=done.size*10+'% הושלם';$('energy').textContent=energy+'%';
 $('inventory').innerHTML=items.length?items.map(i=>`<span class="item">${i}</span>`).join(''):'<small>עדיין לא נאספו פריטים.</small>';
}
function inspect(spot){
 let i=missions.findIndex(m=>m.spot===spot);
 if(i<0)i=spot==='vault'?8:spot==='rocket'?9:-1;
 if(i>=0)openMission(i);
}
function openMission(i){
 if(done.has(i)){openModal(`<h2>✓ המשימה הושלמה</h2><p>כבר פיצחתם את ${missions[i].title}.</p><button class="btn primary" onclick="closeModal()">המשך</button>`);return}
 let m=missions[i];
 if(m.type==='flash'){openFlash(i);return}
 if(m.type==='memory'){openMemory(i);return}
 let body='';
 if(m.type==='choice')body=`<div class="options">${m.opts.map((o,j)=>`<button onclick="check(${i},'${j}',this)">${o}</button>`).join('')}</div>`;
 else body=`<input id="answer" autocomplete="off" placeholder="${m.type==='lock'?'קוד המנעול':'הקלידו תשובה'}" onkeydown="if(event.key==='Enter')checkInput(${i})"><button class="btn primary" onclick="checkInput(${i})">בדיקת תשובה</button>`;
 openModal(`<h2>${m.icon} ${i+1}. ${m.title}</h2><p>${m.story}</p><div class="panel"><b>${m.q}</b></div>${body}<div class="feedback" id="feedback"></div><button class="btn" onclick="showMissionHint(${i})">💡 רמז</button> <button class="btn" onclick="closeModal()">סגור</button>`);
}
function norm(s){return String(s).replace(/\s/g,'').replace(/[−–]/g,'-').replace(/°/g,'').toLowerCase()}
function checkInput(i){let v=$('answer')?.value;if(v!==undefined)check(i,v)}
function check(i,v,button){
 let m=missions[i],ok=norm(v)===norm(m.a);
 if(m.type==='choice'&&button){button.classList.add(ok?'correct':'wrong')}
 let f=$('feedback');if(!f)return;
 if(ok){f.className='feedback good';f.textContent='נכון! המשימה הושלמה.';complete(i);setTimeout(()=>{if(i===9&&done.size===10)victory();else closeModal()},800)}
 else{f.className='feedback bad';f.textContent='לא בדיוק. בדקו שוב את הנתונים ונסו מחדש.';energy=Math.max(0,energy-2);$('energy').textContent=energy+'%'}
}
function complete(i){
 if(done.has(i))return;done.add(i);items.push(missions[i].item);render();log('הושלמה משימה: '+missions[i].title+' — התקבל '+missions[i].item);
 if(done.size===10)setTimeout(victory,900)
}
function showMissionHint(i){openModal(`<h2>💡 רמז למשימה ${i+1}</h2><p>${missions[i].hint}</p><button class="btn primary" onclick="openMission(${i})">חזרה לחידה</button>`)}
function hint(){
 let i=missions.findIndex((m,i)=>!done.has(i));if(i<0){victory();return}
 openModal(`<h2>💡 רמז מערכת</h2><p><b>${missions[i].title}</b></p><p>${missions[i].hint}</p><button class="btn primary" onclick="openMission(${i})">פתחו את המשימה</button>`);
}
function briefing(){openModal(`<h2>📟 תדריך קפטן</h2><p>התחנה ORION נפגעה. עליכם להשלים עשר משימות, לאסוף ציוד ולשחזר את מערכת השיגור.</p><p>אפשר לנוע בין החדרים דרך המפה או הכפתורים. כרטיסיות ירוקות מסמנות משימות שהושלמו. שימו לב לרמזים ביומן.</p><button class="btn primary" onclick="closeModal()">הבנתי</button>`)}
function openFlash(i=5){
 flashFound=new Set();
 const pos=[[15,22],[72,28],[43,72],[84,77],[23,67]];
 openModal(`<h2>🔦 חיפוש בחשכה</h2><p>גלו שלושה סמלים נסתרים. לחצו על הסמלים שבחדר.</p><div class="flashroom" id="flashroom" onpointermove="moveLight(event)">${pos.map((p,j)=>`<button style="left:${p[0]}%;top:${p[1]}%" id="dark${j}" onclick="findDark(${j},${i})">${['✦','⌖','◈','⚡','◇'][j]}</button>`).join('')}<div id="shade" style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle 85px at 50% 50%,transparent 0 35%,#000 100%)"></div></div><p id="darkCount">סמלים שנמצאו: 0/3</p><button class="btn" onclick="closeModal()">סגור</button>`);
}
function moveLight(e){let r=$('flashroom').getBoundingClientRect();$('shade').style.background=`radial-gradient(circle 95px at ${e.clientX-r.left}px ${e.clientY-r.top}px,transparent 0 35%,#000 100%)`}
function findDark(j,i){if(flashFound.has(j))return;flashFound.add(j);$('dark'+j).classList.add('found');$('darkCount').textContent='סמלים שנמצאו: '+flashFound.size+'/3';if(flashFound.size>=3){complete(i);$('darkCount').textContent='כל הסמלים נמצאו!';setTimeout(closeModal,900)}}
function openMemory(i){
 const symbols=['🚀','🪐','🔑','⚡','🚀','🪐','🔑','⚡'].sort(()=>Math.random()-.5);
 memoryState={first:null,lock:false,matches:0,symbols};
 openModal(`<h2>⚡ ליבת הזיכרון</h2><p>מצאו את ארבעת הזוגות. הפכו שני קלפים בכל תור.</p><div class="memory" id="memory">${symbols.map((s,j)=>`<button class="tile" id="tile${j}" onclick="flipTile(${j},${i})">?</button>`).join('')}</div><p id="memoryCount">זוגות: 0/4</p><button class="btn" onclick="closeModal()">סגור</button>`);
}
function flipTile(j,i){
 let s=memoryState;if(s.lock||$('tile'+j).classList.contains('matched')||$('tile'+j).classList.contains('open'))return;
 let b=$('tile'+j);b.textContent=s.symbols[j];b.classList.add('open');
 if(s.first===null){s.first=j;return}
 let first=s.first;s.first=null;
 if(s.symbols[first]===s.symbols[j]){
  s.matches++;$('tile'+first).classList.add('matched');b.classList.add('matched');$('memoryCount').textContent='זוגות: '+s.matches+'/4';
  if(s.matches===4){complete(i);setTimeout(closeModal,900)}
 }else{
  s.lock=true;setTimeout(()=>{$('tile'+first).textContent='?';b.textContent='?';$('tile'+first).classList.remove('open');b.classList.remove('open');s.lock=false},750)
 }
}
function victory(){
 closeModal();
 openModal(`<div style="text-align:center;padding:18px 0"><div style="font-size:60px">🚀</div><h2 style="font-size:28px">החללית שוגרה בהצלחה!</h2><p>קפטן, פיצחתם את כל עשר המשימות, שחזרתם את המערכות והגעתם למסלול אל כוכב הלכת האבוד.</p><p>ציון משימה: ${Math.max(0,100-energy)} נקודות אנרגיה נוצלו.</p><button class="btn primary" onclick="resetGame()">משחק חדש</button></div>`);
}
function resetGame(){
 done=new Set();items=[];energy=100;current='lab';start=Date.now();$('log').innerHTML='';closeModal();render();log('המערכת אופסה. המשימה מתחילה מחדש.');
}
setInterval(()=>{let s=Math.floor((Date.now()-start)/1000);$('clock').textContent=String(Math.floor(s/60)).padStart(2,'0')+':'+String(s%60).padStart(2,'0')},1000);
render();
</script>
</body>
</html>

Game Source: ORION — כוכב הלכת האבוד

Creator: AtomicCoder59

Libraries: none

Complexity: complex (243 lines, 22.1 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: orion-atomiccoder59" to link back to the original. Then publish at arcadelab.ai/publish.