Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Combat Helicopter Simulator</title> | |
| <style> | |
| body { | |
| margin: 0; | |
| overflow: hidden; | |
| background: #000; | |
| font-family: 'Courier New', monospace; | |
| } | |
| #loading { | |
| position: fixed; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| background: rgba(0,0,0,0.8); | |
| padding: 20px; | |
| border-radius: 10px; | |
| z-index: 2000; | |
| text-align: center; | |
| } | |
| .loading-spinner { | |
| width: 50px; | |
| height: 50px; | |
| border: 5px solid #0f0; | |
| border-top: 5px solid transparent; | |
| border-radius: 50%; | |
| animation: spin 1s linear infinite; | |
| margin: 0 auto 20px; | |
| } | |
| @keyframes spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| .loading-text { | |
| color: #0f0; | |
| font-size: 24px; | |
| text-align: center; | |
| } | |
| #cockpit-frame { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| border: 20px solid #2a2a2a; | |
| box-sizing: border-box; | |
| pointer-events: none; | |
| z-index: 1000; | |
| } | |
| #cockpit-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(135deg, rgba(0,0,0,0.3) 0%, transparent 50%, rgba(0,0,0,0.3) 100%); | |
| pointer-events: none; | |
| z-index: 999; | |
| } | |
| #info { | |
| position: absolute; | |
| top: 10px; | |
| left: 10px; | |
| color: #0f0; | |
| background: rgba(0,20,0,0.7); | |
| padding: 10px; | |
| font-size: 14px; | |
| z-index: 1001; | |
| border: 1px solid #0f0; | |
| border-radius: 5px; | |
| user-select: none; | |
| } | |
| #crosshair { | |
| position: fixed; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 40px; | |
| height: 40px; | |
| border: 2px solid rgba(0,255,0,0.7); | |
| border-radius: 50%; | |
| z-index: 1001; | |
| pointer-events: none; | |
| } | |
| #crosshair::before, | |
| #crosshair::after { | |
| content: ''; | |
| position: absolute; | |
| background: rgba(0,255,0,0.7); | |
| } | |
| #crosshair::before { | |
| top: 50%; | |
| left: -10px; | |
| right: -10px; | |
| height: 2px; | |
| transform: translateY(-50%); | |
| } | |
| #crosshair::after { | |
| left: 50%; | |
| top: -10px; | |
| bottom: -10px; | |
| width: 2px; | |
| transform: translateX(-50%); | |
| } | |
| #healthBar { | |
| position: absolute; | |
| bottom: 20px; | |
| left: 20px; | |
| width: 400px; | |
| height: 30px; | |
| background: rgba(0,20,0,0.7); | |
| border: 2px solid #0f0; | |
| z-index: 1001; | |
| border-radius: 15px; | |
| overflow: hidden; | |
| } | |
| #health { | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, #0f0, #00ff00); | |
| transition: width 0.3s; | |
| } | |
| #ammo { | |
| position: absolute; | |
| bottom: 20px; | |
| right: 20px; | |
| color: #0f0; | |
| background: rgba(0,20,0,0.7); | |
| padding: 10px; | |
| font-size: 20px; | |
| z-index: 1001; | |
| border: 1px solid #0f0; | |
| border-radius: 5px; | |
| } | |
| #altitude-indicator, | |
| #speed-indicator, | |
| #compass { | |
| position: fixed; | |
| color: #0f0; | |
| background: rgba(0,20,0,0.7); | |
| padding: 10px; | |
| border: 1px solid #0f0; | |
| border-radius: 5px; | |
| z-index: 1001; | |
| } | |
| #altitude-indicator { | |
| left: 20px; | |
| top: 50%; | |
| } | |
| #speed-indicator { | |
| right: 20px; | |
| top: 50%; | |
| } | |
| #compass { | |
| top: 20px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| } | |
| #radar { | |
| position: fixed; | |
| bottom: 20px; | |
| right: 20px; | |
| width: 200px; | |
| height: 200px; | |
| background: rgba(0,20,0,0.7); | |
| border: 2px solid #0f0; | |
| border-radius: 50%; | |
| z-index: 1001; | |
| overflow: hidden; | |
| } | |
| .radar-sweep { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| width: 50%; | |
| height: 2px; | |
| background: linear-gradient(90deg, #0f0, transparent); | |
| transform-origin: left center; | |
| animation: radar-sweep 4s infinite linear; | |
| } | |
| .radar-dot { | |
| position: absolute; | |
| width: 4px; | |
| height: 4px; | |
| background: #f00; | |
| border-radius: 50%; | |
| transform: translate(-50%, -50%); | |
| } | |
| @keyframes radar-sweep { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| #stage { | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| color: #0f0; | |
| background: rgba(0,20,0,0.8); | |
| padding: 20px; | |
| font-size: 32px; | |
| z-index: 1001; | |
| border-radius: 10px; | |
| display: none; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="loading"> | |
| <div class="loading-spinner"></div> | |
| <div class="loading-text">Loading game assets...</div> | |
| </div> | |
| <div id="cockpit-frame"></div> | |
| <div id="cockpit-overlay"></div> | |
| <div id="info"> | |
| Click to start<br> | |
| WASD - Move Helicopter<br> | |
| Mouse - Aim<br> | |
| Left Click - Shoot<br> | |
| R - Reload | |
| </div> | |
| <div id="crosshair"></div> | |
| <div id="healthBar"><div id="health"></div></div> | |
| <div id="ammo">Ammo: 30/30</div> | |
| <div id="stage">Stage 1</div> | |
| <div id="altitude-indicator">ALT: <span>50</span>m</div> | |
| <div id="speed-indicator">SPD: <span>0</span>km/h</div> | |
| <div id="compass">HDG: <span>0</span>Β°</div> | |
| <div id="radar"> | |
| <div class="radar-sweep"></div> | |
| <div class="radar-targets"></div> | |
| </div> | |
| <script type="importmap"> | |
| { | |
| "imports": { | |
| "three": "https://unpkg.com/[email protected]/build/three.module.js", | |
| "three/addons/": "https://unpkg.com/[email protected]/examples/jsm/" | |
| } | |
| } | |
| </script> | |
| <script type="module" src="game.js"></script> | |
| </body> | |
| </html> | 
