| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- <!DOCTYPE html>
- <html lang="ru">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name="description" content="Интерактивная образовательная схема устройства самого массового кодового замка СССР — ЗКЭ-4-10">
- <meta name="theme-color" content="#2a2a2a">
- <title>ЗКЭ-4-10 — Кодовый замок СССР | Интерактивная схема</title>
- <!-- PWA -->
- <link rel="manifest" href="manifest.json">
- <link rel="icon" type="image/png" href="images/lock-icon.png">
- <link rel="apple-touch-icon" href="images/lock-icon.png">
- <!-- Шрифты -->
- <link rel="preconnect" href="https://fonts.googleapis.com">
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
- <link href="https://fonts.googleapis.com/css2?family=PT+Serif:wght@400;700&family=Roboto+Slab:wght@300;500;700&family=Share+Tech+Mono&display=swap" rel="stylesheet">
- <!-- Стили -->
- <link rel="stylesheet" href="css/style.css">
- </head>
- <body>
- <!-- ============ ШАПКА ============ -->
- <header class="app-header">
- <div class="header-content">
- <div class="header-title">
- <h1>ЗКЭ-4-10</h1>
- <p class="subtitle">Кодовый электронный замок · СССР · 1980-е</p>
- </div>
- <nav class="header-nav">
- <button id="btn-help" class="nav-btn" title="Справка">?</button>
- <button id="btn-sound" class="nav-btn" title="Звук">🔊</button>
- <button id="btn-reset" class="nav-btn" title="Сбросить">⟲</button>
- </nav>
- </div>
- <div class="progress-line">
- <div id="progress-fill" class="progress-fill"></div>
- </div>
- </header>
- <!-- ============ ОСНОВНОЙ ЭКРАН ============ -->
- <main class="app-main">
- <!-- ЛЕВАЯ ПАНЕЛЬ: ЗАЩЁЛКА -->
- <section class="panel panel-lock" id="panel-lock">
- <div class="panel-header">
- <span class="panel-tag">01</span>
- <h2>Электромеханическая защёлка</h2>
- </div>
- <div class="lock-scene" id="lock-scene">
- <!-- SVG-защёлка рисуется здесь -->
- <svg id="lock-svg" viewBox="0 0 400 500" xmlns="http://www.w3.org/2000/svg" aria-label="Схема защёлки замка">
- <defs>
- <linearGradient id="metalGrad" x1="0%" y1="0%" x2="100%" y2="100%">
- <stop offset="0%" stop-color="#8b8b8b"/>
- <stop offset="50%" stop-color="#c9c9c9"/>
- <stop offset="100%" stop-color="#6b6b6b"/>
- </linearGradient>
- <linearGradient id="doorGrad" x1="0%" y1="0%" x2="0%" y2="100%">
- <stop offset="0%" stop-color="#4a3a2a"/>
- <stop offset="100%" stop-color="#2e2419"/>
- </linearGradient>
- <radialGradient id="coilGlow" cx="50%" cy="50%" r="50%">
- <stop offset="0%" stop-color="#ffcc00" stop-opacity="0.9"/>
- <stop offset="70%" stop-color="#ff8800" stop-opacity="0.4"/>
- <stop offset="100%" stop-color="#ff6600" stop-opacity="0"/>
- </radialGradient>
- <filter id="softGlow" x="-50%" y="-50%" width="200%" height="200%">
- <feGaussianBlur stdDeviation="6" result="blur"/>
- <feMerge>
- <feMergeNode in="blur"/>
- <feMergeNode in="SourceGraphic"/>
- </feMerge>
- </filter>
- </defs>
- <!-- Дверное полотно -->
- <rect x="20" y="20" width="360" height="460" fill="url(#doorGrad)" stroke="#1a140c" stroke-width="3" rx="4"/>
- <!-- Дверная коробка (ответная планка) -->
- <rect x="330" y="180" width="60" height="140" fill="url(#metalGrad)" stroke="#3a3a3a" stroke-width="2" rx="3"/>
- <rect x="345" y="220" width="30" height="60" fill="#1a1a1a" rx="2"/>
- <!-- Корпус замка -->
- <rect x="60" y="200" width="200" height="120" fill="url(#metalGrad)" stroke="#3a3a3a" stroke-width="2" rx="4"/>
- <circle cx="85" cy="225" r="4" fill="#444"/>
- <circle cx="85" cy="295" r="4" fill="#444"/>
- <circle cx="235" cy="225" r="4" fill="#444"/>
- <circle cx="235" cy="295" r="4" fill="#444"/>
- <!-- Электромагнит (катушка) -->
- <g id="magnet-group">
- <ellipse id="magnet-glow" cx="110" cy="260" rx="45" ry="35" fill="url(#coilGlow)" opacity="0" filter="url(#softGlow)"/>
- <rect x="85" y="240" width="50" height="40" fill="#2a2a2a" stroke="#555" stroke-width="2" rx="3"/>
- <!-- Витки катушки -->
- <line x1="88" y1="248" x2="132" y2="248" stroke="#c9a227" stroke-width="1.5"/>
- <line x1="88" y1="254" x2="132" y2="254" stroke="#c9a227" stroke-width="1.5"/>
- <line x1="88" y1="260" x2="132" y2="260" stroke="#c9a227" stroke-width="1.5"/>
- <line x1="88" y1="266" x2="132" y2="266" stroke="#c9a227" stroke-width="1.5"/>
- <line x1="88" y1="272" x2="132" y2="272" stroke="#c9a227" stroke-width="1.5"/>
- <text x="110" y="234" text-anchor="middle" font-family="Share Tech Mono" font-size="10" fill="#c9a227">КА-ТУШ-КА</text>
- </g>
- <!-- Подвижный сердечник защёлки -->
- <g id="bolt-group">
- <rect id="bolt" x="155" y="245" width="180" height="30" fill="#d9d9d9" stroke="#4a4a4a" stroke-width="2" rx="2"/>
- <rect x="300" y="252" width="40" height="16" fill="#b0b0b0" stroke="#4a4a4a" stroke-width="1.5" rx="1"/>
- </g>
- <!-- Пружина возврата -->
- <g id="spring-group">
- <path id="spring" d="M 165 285 l 8 8 l -8 8 l 8 8 l -8 8" stroke="#888" stroke-width="2" fill="none"/>
- </g>
- <!-- Резервный ключ -->
- <g id="key-group">
- <circle cx="100" cy="400" r="14" fill="#8b6f47" stroke="#3a2a1a" stroke-width="2"/>
- <circle cx="100" cy="400" r="5" fill="#2a1a0a"/>
- <rect x="96" y="414" width="8" height="35" fill="#8b6f47" stroke="#3a2a1a" stroke-width="1.5"/>
- <text x="100" y="465" text-anchor="middle" font-family="Roboto Slab" font-size="11" fill="#c9c9c9">Резервный ключ</text>
- </g>
- <!-- Подписи -->
- <text x="110" y="310" text-anchor="middle" font-family="Roboto Slab" font-size="11" fill="#c9c9c9">Электромагнит</text>
- <text x="250" y="240" text-anchor="middle" font-family="Roboto Slab" font-size="11" fill="#c9c9c9">Ригель (защёлка)</text>
- <text x="350" y="175" text-anchor="middle" font-family="Roboto Slab" font-size="11" fill="#c9c9c9">Ответная планка</text>
- </svg>
- <!-- Индикатор состояния -->
- <div class="lock-status" id="lock-status">
- <span class="status-dot" id="status-dot"></span>
- <span class="status-text" id="status-text">Замок закрыт</span>
- </div>
- </div>
- <div class="lock-info">
- <p><strong>Электромагнит</strong> — при подаче напряжения втягивает сердечник, который сдвигает ригель вправо, освобождая дверь.</p>
- </div>
- </section>
- <!-- ПРАВАЯ ВЕРХНЯЯ ПАНЕЛЬ: ПРИНЦИПИАЛЬНАЯ СХЕМА -->
- <section class="panel panel-circuit" id="panel-circuit">
- <div class="panel-header">
- <span class="panel-tag">02</span>
- <h2>Принципиальная схема</h2>
- <div class="circuit-legend">
- <span class="legend-item"><i class="dot dot-off"></i>не активен</span>
- <span class="legend-item"><i class="dot dot-on"></i>активен</span>
- </div>
- </div>
- <div class="circuit-wrap">
- <svg id="circuit-svg" viewBox="0 0 700 380" xmlns="http://www.w3.org/2000/svg" aria-label="Принципиальная схема замка ЗКЭ-4-10">
- <defs>
- <marker id="arrow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto">
- <path d="M0,0 L6,3 L0,6 Z" fill="#5a5a5a"/>
- </marker>
- </defs>
- <!-- Рамка схемы -->
- <rect x="5" y="5" width="690" height="370" fill="#0e1419" stroke="#2a3a45" stroke-width="1.5" rx="6"/>
- <!-- ===== Блок питания (трансформатор) ===== -->
- <g id="node-psu" class="circuit-node" data-node="psu">
- <rect x="30" y="150" width="90" height="80" fill="#1a2530" stroke="#3a5050" stroke-width="2" rx="4"/>
- <text x="75" y="185" text-anchor="middle" font-family="Share Tech Mono" font-size="11" fill="#7fbfbf">220V</text>
- <text x="75" y="200" text-anchor="middle" font-family="Share Tech Mono" font-size="10" fill="#5a8f8f">ТР-1</text>
- <text x="75" y="218" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Трансформатор</text>
- <!-- Волна переменного тока -->
- <path d="M 40 165 q 5 -8 10 0 q 5 8 10 0 q 5 -8 10 0 q 5 8 10 0" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- </g>
- <!-- ===== Диодный мост 1 ===== -->
- <g id="node-bridge1" class="circuit-node" data-node="bridge1">
- <rect x="160" y="90" width="70" height="70" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <!-- Ромб диодного моста -->
- <path d="M 195 100 L 215 120 L 195 140 L 175 120 Z" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <path d="M 195 100 L 195 120 M 195 120 L 195 140" stroke="#7fbfbf" stroke-width="1"/>
- <text x="195" y="124" text-anchor="middle" font-family="Share Tech Mono" font-size="8" fill="#7fbfbf">VD1</text>
- <text x="195" y="80" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Мост питания</text>
- </g>
- <!-- ===== Диодный мост 2 ===== -->
- <g id="node-bridge2" class="circuit-node" data-node="bridge2">
- <rect x="160" y="200" width="70" height="70" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <path d="M 195 210 L 215 230 L 195 250 L 175 230 Z" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <path d="M 195 210 L 195 230 M 195 230 L 195 250" stroke="#7fbfbf" stroke-width="1"/>
- <text x="195" y="234" text-anchor="middle" font-family="Share Tech Mono" font-size="8" fill="#7fbfbf">VD2</text>
- <text x="195" y="195" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Мост замка</text>
- </g>
- <!-- Провода от трансформатора к мостам -->
- <path d="M 120 175 L 140 175 L 140 120 L 160 120" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 120 205 L 140 205 L 140 230 L 160 230" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 120 175 L 140 175 L 140 120 L 160 120" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <!-- ===== Тиристоры (4 шт.) ===== -->
- <!-- VS1 -->
- <g id="node-vs1" class="circuit-node" data-node="vs1">
- <rect x="270" y="60" width="80" height="50" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <polygon points="290,75 305,85 290,95" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="305" y1="85" x2="330" y2="85" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="295" y1="70" x2="295" y2="85" stroke="#7fbfbf" stroke-width="1.5"/>
- <text x="310" y="105" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">VS1</text>
- </g>
- <!-- VS2 -->
- <g id="node-vs2" class="circuit-node" data-node="vs2">
- <rect x="270" y="120" width="80" height="50" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <polygon points="290,135 305,145 290,155" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="305" y1="145" x2="330" y2="145" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="295" y1="130" x2="295" y2="145" stroke="#7fbfbf" stroke-width="1.5"/>
- <text x="310" y="165" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">VS2</text>
- </g>
- <!-- VS3 -->
- <g id="node-vs3" class="circuit-node" data-node="vs3">
- <rect x="270" y="180" width="80" height="50" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <polygon points="290,195 305,205 290,215" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="305" y1="205" x2="330" y2="205" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="295" y1="190" x2="295" y2="205" stroke="#7fbfbf" stroke-width="1.5"/>
- <text x="310" y="225" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">VS3</text>
- </g>
- <!-- VS4 -->
- <g id="node-vs4" class="circuit-node" data-node="vs4">
- <rect x="270" y="240" width="80" height="50" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <polygon points="290,255 305,265 290,275" fill="none" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="305" y1="265" x2="330" y2="265" stroke="#7fbfbf" stroke-width="1.5"/>
- <line x1="295" y1="250" x2="295" y2="265" stroke="#7fbfbf" stroke-width="1.5"/>
- <text x="310" y="285" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">VS4</text>
- </g>
- <!-- Провода от моста питания к тиристорам -->
- <path d="M 230 110 L 250 110 L 250 85 L 270 85" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 250 110 L 250 145 L 270 145" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 230 130 L 250 130 L 250 205 L 270 205" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 250 130 L 250 265 L 270 265" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <!-- ===== Кнопки клавиатуры (входные) ===== -->
- <g id="node-keys" class="circuit-node" data-node="keys">
- <rect x="270" y="305" width="80" height="45" fill="#1a2530" stroke="#3a5050" stroke-width="1.5" rx="4"/>
- <text x="310" y="325" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Клавиатура</text>
- <text x="310" y="340" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">КЛ-1</text>
- </g>
- <path d="M 310 305 L 310 290" stroke="#4fc3f7" stroke-width="1" fill="none" stroke-dasharray="3,2"/>
- <path d="M 310 290 L 350 290" stroke="#4fc3f7" stroke-width="1" fill="none" stroke-dasharray="3,2"/>
- <!-- ===== Реле времени ===== -->
- <g id="node-relay" class="circuit-node" data-node="relay">
- <rect x="400" y="130" width="90" height="80" fill="#1a2530" stroke="#3a5050" stroke-width="2" rx="4"/>
- <text x="445" y="160" text-anchor="middle" font-family="Share Tech Mono" font-size="11" fill="#7fbfbf">КТ</text>
- <text x="445" y="178" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Реле времени</text>
- <text x="445" y="195" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#5a8f8f">~1.5 сек</text>
- </g>
- <path d="M 350 85 L 380 85 L 380 170 L 400 170" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 350 145 L 380 145 L 380 170" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 350 205 L 380 205 L 380 170" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 350 265 L 380 265 L 380 170" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <!-- ===== Электромагнит замка ===== -->
- <g id="node-magnet" class="circuit-node" data-node="magnet">
- <rect x="550" y="140" width="110" height="70" fill="#1a2530" stroke="#3a5050" stroke-width="2" rx="4"/>
- <!-- Катушка -->
- <line x1="565" y1="160" x2="645" y2="160" stroke="#c9a227" stroke-width="2"/>
- <line x1="565" y1="168" x2="645" y2="168" stroke="#c9a227" stroke-width="2"/>
- <line x1="565" y1="176" x2="645" y2="176" stroke="#c9a227" stroke-width="2"/>
- <line x1="565" y1="184" x2="645" y2="184" stroke="#c9a227" stroke-width="2"/>
- <text x="605" y="200" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#c9a227">ЭМ-1</text>
- <text x="605" y="130" text-anchor="middle" font-family="Roboto Slab" font-size="10" fill="#8fbcbc">Электромагнит</text>
- </g>
- <path d="M 490 170 L 550 170" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 660 175 L 680 175 L 680 30 L 75 30 L 75 150" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <!-- ===== Лампа индикации ===== -->
- <g id="node-lamp" class="circuit-node" data-node="lamp">
- <circle cx="500" cy="280" r="18" fill="#1a2530" stroke="#3a5050" stroke-width="1.5"/>
- <line x1="492" y1="272" x2="508" y2="288" stroke="#5a8f8f" stroke-width="1.5"/>
- <line x1="508" y1="272" x2="492" y2="288" stroke="#5a8f8f" stroke-width="1.5"/>
- <text x="500" y="315" text-anchor="middle" font-family="Share Tech Mono" font-size="9" fill="#7fbfbf">HL1</text>
- <text x="500" y="250" text-anchor="middle" font-family="Roboto Slab" font-size="9" fill="#8fbcbc">Лампа</text>
- </g>
- <path d="M 445 210 L 445 280 L 482 280" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <path d="M 518 280 L 550 280 L 550 210" stroke="#4fc3f7" stroke-width="1.5" fill="none"/>
- <!-- Подпись -->
- <text x="350" y="360" text-anchor="middle" font-family="Share Tech Mono" font-size="10" fill="#3a5050">Принципиальная схема ЗКЭ-4-10 (упрощённо)</text>
- </svg>
- <!-- Информационное окно о выбранном элементе -->
- <div class="circuit-info" id="circuit-info">
- <p class="circuit-info-hint">Наведите или нажмите на элемент схемы, чтобы узнать о нём больше</p>
- </div>
- </div>
- </section>
- <!-- ПРАВАЯ НИЖНЯЯ ПАНЕЛЬ: КЛАВИАТУРА -->
- <section class="panel panel-keyboard" id="panel-keyboard">
- <div class="panel-header">
- <span class="panel-tag">03</span>
- <h2>Клавиатура</h2>
- <div class="kbd-indicators">
- <div class="kbd-ind" id="ind-code" title="Набрано цифр кода">0 / 4</div>
- <div class="kbd-ind" id="ind-err" title="Ошибок набора">✕ 0</div>
- </div>
- </div>
- <div class="keyboard-scene">
- <div class="keyboard-device">
- <!-- Верхняя часть корпуса -->
- <div class="kbd-top">
- <div class="kbd-lamp" id="kbd-lamp" title="Сигнальная лампа открытия"></div>
- <div class="kbd-brand">ЗКЭ-4-10</div>
- <div class="kbd-led" id="kbd-led" title="Индикатор питания"></div>
- </div>
- <!-- Кнопки -->
- <div class="keyboard-grid" id="keyboard-grid">
- <button class="key" data-key="1"><span>1</span></button>
- <button class="key" data-key="2"><span>2</span></button>
- <button class="key" data-key="3"><span>3</span></button>
- <button class="key" data-key="4"><span>4</span></button>
- <button class="key" data-key="5"><span>5</span></button>
- <button class="key" data-key="6"><span>6</span></button>
- <button class="key" data-key="7"><span>7</span></button>
- <button class="key" data-key="8"><span>8</span></button>
- <button class="key" data-key="9"><span>9</span></button>
- <button class="key key-disabled" data-key="." disabled><span>·</span></button>
- <button class="key" data-key="0"><span>0</span></button>
- <button class="key key-reset" id="key-reset" title="Сброс"><span>СБРОС</span></button>
- </div>
- </div>
- </div>
- <div class="keyboard-footer">
- <div class="code-display" id="code-display">
- <span class="code-cell" data-slot="0">_</span>
- <span class="code-cell" data-slot="1">_</span>
- <span class="code-cell" data-slot="2">_</span>
- <span class="code-cell" data-slot="3">_</span>
- </div>
- <p class="kbd-hint">Введите 4-значный код. Неверный код сбрасывает набор.</p>
- </div>
- </section>
- </main>
- <!-- ============ НИЖНЯЯ ПАНЕЛЬ / ЛОГ СОБЫТИЙ ============ -->
- <footer class="app-footer">
- <div class="log-panel" id="log-panel">
- <div class="log-header">
- <span>Журнал событий</span>
- <button id="btn-clear-log" class="log-clear">Очистить</button>
- </div>
- <ul class="log-list" id="log-list">
- <li class="log-item log-info">Система готова. Введите код.</li>
- </ul>
- </div>
- <div class="footer-actions">
- <button id="btn-quiz" class="btn btn-primary btn-quiz">Итоговое тестирование</button>
- </div>
- </footer>
- <!-- ============ МОДАЛЬНОЕ ОКНО: СПРАВКА ============ -->
- <div class="modal" id="modal-help" aria-hidden="true">
- <div class="modal-backdrop" data-close></div>
- <div class="modal-content">
- <button class="modal-close" data-close aria-label="Закрыть">✕</button>
- <h2>Справка: замок ЗКЭ-4-10</h2>
- <div class="modal-body">
- <p><strong>ЗКЭ-4-10</strong> — кодовый электронный замок, выпускавшийся в СССР в 1980-е годы. Устанавливался на дверях лабораторий, НИИ и административных помещений.</p>
- <h3>Основные характеристики</h3>
- <ul>
- <li>Длина кода — <strong>4 цифры</strong></li>
- <li>Элементная база — <strong>тиристоры</strong> (а не реле)</li>
- <li>Питание — сеть <strong>220 В</strong> через трансформатор</li>
- <li>Исполнительный механизм — <strong>электромагнит</strong></li>
- <li>Резервное открытие — <strong>механический ключ</strong></li>
- </ul>
- <h3>Как играть</h3>
- <ol>
- <li>Введите 4-значный код на клавиатуре (код задаётся в начале — по умолчанию <strong>1·2·3·4</strong>).</li>
- <li>Следите за подсветкой схемы: активные элементы выделяются цветом.</li>
- <li>При верном коде срабатывает реле времени, и электромагнит отодвигает защёлку.</li>
- <li>При неверной цифре — сброс и сигнал ошибки.</li>
- </ol>
- <p class="modal-note">Кнопка <strong>·</strong> на клавиатуре не задействована — так было и в оригинале.</p>
- </div>
- </div>
- </div>
- <!-- ============ МОДАЛЬНОЕ ОКНО: ТЕСТ ============ -->
- <div class="modal modal-quiz" id="modal-quiz" aria-hidden="true">
- <div class="modal-backdrop" data-close-quiz></div>
- <div class="modal-content modal-content-quiz">
- <button class="modal-close" data-close-quiz aria-label="Закрыть">✕</button>
- <div id="quiz-container">
- <!-- Quiz рендерится из JS -->
- </div>
- </div>
- </div>
- <!-- ============ МОДАЛЬНОЕ ОКНО: ПОБЕДА ============ -->
- <div class="toast" id="toast" aria-live="polite"></div>
- <!-- ============ СКРИПТЫ ============ -->
- <script src="js/audio.js"></script>
- <script src="js/circuit.js"></script>
- <script src="js/keyboard.js"></script>
- <script src="js/quiz.js"></script>
- <script src="js/app.js"></script>
- <!-- Регистрация Service Worker -->
- <script>
- if ('serviceWorker' in navigator) {
- window.addEventListener('load', () => {
- navigator.serviceWorker.register('sw.js')
- .then(reg => console.log('[PWA] Service Worker зарегистрирован:', reg.scope))
- .catch(err => console.warn('[PWA] Ошибка регистрации SW:', err));
- });
- }
- </script>
- </body>
- </html>
|