RetroGame / index.html
Lukeetah's picture
Create index.html
8a55caf verified
raw
history blame
24.5 kB
<!DOCTYPE html>
<html lang="es-AR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🇦🇷 RETRO LEGENDS: Ultimate Nostalgia Edition 🎮</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Orbitron:wght@400;700;900&display=swap');
:root {
--primary-blue: #0066cc;
--primary-yellow: #ffcc00;
--neon-green: #00ff41;
--neon-pink: #ff1493;
--neon-cyan: #00ffff;
--dark-bg: #0a0a0a;
--glass-bg: rgba(255, 255, 255, 0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Press Start 2P', monospace;
background: linear-gradient(45deg, #0a0a0a, #1a1a2e, #16213e, #0f3460);
background-size: 400% 400%;
animation: cosmicGradient 20s ease infinite;
color: white;
overflow: hidden;
height: 100vh;
cursor: none;
}
@keyframes cosmicGradient {
0% { background-position: 0% 50%; }
25% { background-position: 100% 50%; }
50% { background-position: 100% 100%; }
75% { background-position: 0% 100%; }
100% { background-position: 0% 50%; }
}
.game-container {
position: relative;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
background: radial-gradient(circle at 50% 50%, rgba(0, 255, 65, 0.1), transparent 70%);
}
.cosmic-header {
background: linear-gradient(90deg,
rgba(0, 0, 0, 0.9),
rgba(0, 102, 204, 0.3),
rgba(255, 20, 147, 0.3),
rgba(0, 0, 0, 0.9)
);
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 3px solid var(--neon-green);
box-shadow: 0 0 30px rgba(0, 255, 65, 0.5), inset 0 0 20px rgba(0, 0, 0, 0.8);
backdrop-filter: blur(10px);
z-index: 1000;
}
.title-matrix {
font-family: 'Orbitron', monospace;
font-weight: 900;
font-size: clamp(1.2rem, 4vw, 2.5rem);
background: linear-gradient(45deg,
var(--neon-green),
var(--neon-cyan),
var(--neon-pink),
var(--primary-yellow)
);
background-size: 400% 400%;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: textMatrix 3s ease-in-out infinite, titleFloat 4s ease-in-out infinite alternate;
text-shadow: 0 0 20px rgba(0, 255, 65, 0.8);
filter: drop-shadow(0 0 10px rgba(0, 255, 255, 0.6));
}
@keyframes textMatrix {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
@keyframes titleFloat {
from { transform: translateY(-5px) rotate(-0.5deg); }
to { transform: translateY(5px) rotate(0.5deg); }
}
.hud-matrix {
display: flex;
gap: 30px;
align-items: center;
}
.stat-capsule {
background: linear-gradient(135deg,
rgba(0, 255, 65, 0.2),
rgba(0, 0, 0, 0.8),
rgba(0, 255, 255, 0.2)
);
border: 2px solid var(--neon-green);
border-radius: 25px;
padding: 12px 20px;
display: flex;
align-items: center;
gap: 10px;
font-size: clamp(0.6rem, 1.5vw, 0.9rem);
box-shadow:
0 0 15px rgba(0, 255, 65, 0.4),
inset 0 0 10px rgba(0, 0, 0, 0.6);
backdrop-filter: blur(5px);
transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
position: relative;
overflow: hidden;
}
.stat-capsule::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s;
}
.stat-capsule:hover::before {
left: 100%;
}
.stat-capsule:hover {
transform: scale(1.1) translateY(-2px);
box-shadow:
0 0 25px rgba(0, 255, 65, 0.8),
0 10px 20px rgba(0, 0, 0, 0.4);
}
.stat-icon {
font-size: 1.2em;
animation: iconPulse 2s ease-in-out infinite alternate;
}
@keyframes iconPulse {
from { transform: scale(1); filter: brightness(1); }
to { transform: scale(1.2); filter: brightness(1.5); }
}
.game-viewport {
flex: 1;
position: relative;
background:
radial-gradient(circle at 20% 80%, rgba(0, 255, 65, 0.1), transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 20, 147, 0.1), transparent 50%),
radial-gradient(circle at 40% 40%, rgba(0, 255, 255, 0.05), transparent 50%);
overflow: hidden;
}
#gameCanvas {
width: 100%;
height: 100%;
display: block;
image-rendering: pixelated;
image-rendering: -moz-crisp-edges;
image-rendering: crisp-edges;
filter: contrast(1.1) saturate(1.2);
}
.ai-companion-matrix {
position: absolute;
bottom: 30px;
left: 30px;
right: 30px;
background: linear-gradient(135deg,
rgba(0, 0, 0, 0.95),
rgba(0, 102, 204, 0.1),
rgba(0, 0, 0, 0.95)
);
border: 3px solid var(--neon-cyan);
border-radius: 20px;
padding: 25px;
transform: translateY(150%);
transition: all 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
backdrop-filter: blur(15px);
box-shadow:
0 0 40px rgba(0, 255, 255, 0.4),
inset 0 0 20px rgba(0, 0, 0, 0.8);
z-index: 500;
}
.ai-companion-matrix.active {
transform: translateY(0);
}
.ai-header-matrix {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 20px;
}
.ai-avatar-matrix {
width: 60px;
height: 60px;
background: linear-gradient(45deg,
var(--neon-pink),
var(--neon-cyan),
var(--neon-green),
var(--primary-yellow)
);
background-size: 400% 400%;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28px;
animation: avatarMatrix 3s ease-in-out infinite, avatarRotate 10s linear infinite;
box-shadow:
0 0 20px rgba(0, 255, 255, 0.8),
inset 0 0 10px rgba(0, 0, 0, 0.3);
border: 2px solid rgba(255, 255, 255, 0.3);
}
@keyframes avatarMatrix {
0%, 100% { background-position: 0% 50%; transform: scale(1); }
50% { background-position: 100% 50%; transform: scale(1.1); }
}
@keyframes avatarRotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.ai-info-matrix {
flex: 1;
}
.ai-name-matrix {
font-family: 'Orbitron', monospace;
font-weight: 700;
color: var(--neon-cyan);
font-size: clamp(0.9rem, 2.5vw, 1.3rem);
margin-bottom: 5px;
text-shadow: 0 0 10px var(--neon-cyan);
}
.ai-status-matrix {
font-size: clamp(0.5rem, 1.2vw, 0.7rem);
color: var(--neon-green);
opacity: 0.9;
animation: statusBlink 2s ease-in-out infinite alternate;
}
@keyframes statusBlink {
from { opacity: 0.7; }
to { opacity: 1; }
}
.ai-message-matrix {
background: linear-gradient(135deg,
rgba(0, 255, 65, 0.1),
rgba(0, 0, 0, 0.6),
rgba(0, 255, 255, 0.1)
);
border: 2px solid var(--neon-green);
border-radius: 15px;
padding: 20px;
font-size: clamp(0.6rem, 1.4vw, 0.8rem);
line-height: 1.6;
color: white;
border-left: 5px solid var(--neon-cyan);
box-shadow:
inset 0 0 15px rgba(0, 255, 65, 0.2),
0 0 10px rgba(0, 255, 65, 0.3);
animation: messageGlow 4s ease-in-out infinite alternate;
position: relative;
overflow: hidden;
}
@keyframes messageGlow {
from { box-shadow: inset 0 0 15px rgba(0, 255, 65, 0.2), 0 0 10px rgba(0, 255, 65, 0.3); }
to { box-shadow: inset 0 0 25px rgba(0, 255, 65, 0.4), 0 0 20px rgba(0, 255, 65, 0.6); }
}
.controls-matrix {
position: absolute;
top: 50%;
right: 30px;
transform: translateY(-50%);
background: linear-gradient(135deg,
rgba(0, 0, 0, 0.9),
rgba(255, 20, 147, 0.1),
rgba(0, 0, 0, 0.9)
);
border: 2px solid var(--neon-pink);
border-radius: 20px;
padding: 25px;
backdrop-filter: blur(10px);
box-shadow:
0 0 30px rgba(255, 20, 147, 0.4),
inset 0 0 15px rgba(0, 0, 0, 0.8);
}
.control-group {
margin-bottom: 15px;
}
.control-title {
color: var(--neon-pink);
font-size: clamp(0.5rem, 1.2vw, 0.7rem);
margin-bottom: 8px;
text-shadow: 0 0 5px var(--neon-pink);
}
.control-item {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
font-size: clamp(0.4rem, 1vw, 0.6rem);
padding: 5px 0;
border-bottom: 1px solid rgba(255, 20, 147, 0.3);
}
.control-key {
background: linear-gradient(45deg, var(--neon-pink), var(--neon-cyan));
color: black;
padding: 4px 8px;
border-radius: 6px;
font-weight: bold;
box-shadow: 0 0 10px rgba(255, 20, 147, 0.5);
animation: keyGlow 2s ease-in-out infinite alternate;
}
@keyframes keyGlow {
from { box-shadow: 0 0 10px rgba(255, 20, 147, 0.5); }
to { box-shadow: 0 0 20px rgba(255, 20, 147, 0.8); }
}
.intro-matrix {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background:
radial-gradient(circle at center, rgba(0, 102, 204, 0.3), transparent 70%),
linear-gradient(45deg, #0a0a0a, #1a1a2e, #16213e);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 2000;
animation: introSequence 8s ease-in-out forwards;
}
@keyframes introSequence {
0%, 70% { opacity: 1; transform: scale(1); }
100% { opacity: 0; transform: scale(1.2); pointer-events: none; }
}
.intro-logo-matrix {
font-family: 'Orbitron', monospace;
font-weight: 900;
font-size: clamp(3rem, 10vw, 8rem);
background: linear-gradient(45deg,
var(--neon-green),
var(--neon-cyan),
var(--neon-pink),
var(--primary-yellow),
var(--primary-blue)
);
background-size: 500% 500%;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-align: center;
margin: 30px;
animation: logoMatrix 3s ease-in-out infinite, logoFloat 5s ease-in-out infinite alternate;
text-shadow: 0 0 50px rgba(0, 255, 65, 1);
filter: drop-shadow(0 0 20px rgba(0, 255, 255, 0.8));
}
@keyframes logoMatrix {
0%, 100% { background-position: 0% 50%; }
25% { background-position: 100% 0%; }
50% { background-position: 100% 100%; }
75% { background-position: 0% 100%; }
}
@keyframes logoFloat {
from { transform: translateY(-30px) rotate(-1deg) scale(0.95); }
to { transform: translateY(30px) rotate(1deg) scale(1.05); }
}
.intro-subtitle-matrix {
font-size: clamp(1rem, 4vw, 2rem);
color: var(--neon-cyan);
text-align: center;
margin-top: 40px;
animation: subtitleMatrix 4s ease-in-out infinite alternate;
text-shadow: 0 0 20px var(--neon-cyan);
}
@keyframes subtitleMatrix {
from {
text-shadow: 0 0 20px var(--neon-cyan);
transform: scale(1);
}
to {
text-shadow: 0 0 40px var(--neon-cyan), 0 0 60px var(--neon-cyan);
transform: scale(1.05);
}
}
.loading-matrix {
width: 400px;
height: 12px;
background: rgba(0, 0, 0, 0.8);
border: 2px solid var(--neon-green);
border-radius: 8px;
margin-top: 50px;
overflow: hidden;
box-shadow:
0 0 20px rgba(0, 255, 65, 0.5),
inset 0 0 10px rgba(0, 0, 0, 0.8);
}
.loading-progress-matrix {
height: 100%;
background: linear-gradient(90deg,
var(--neon-green),
var(--neon-cyan),
var(--neon-pink),
var(--primary-yellow)
);
background-size: 200% 100%;
border-radius: 6px;
animation: loadingMatrix 6s ease-in-out forwards, progressShimmer 2s ease-in-out infinite;
box-shadow: 0 0 15px rgba(0, 255, 65, 0.8);
}
@keyframes loadingMatrix {
from { width: 0%; }
to { width: 100%; }
}
@keyframes progressShimmer {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
.custom-cursor {
position: fixed;
width: 20px;
height: 20px;
background: radial-gradient(circle, var(--neon-cyan), transparent 70%);
border-radius: 50%;
pointer-events: none;
z-index: 10000;
mix-blend-mode: difference;
animation: cursorPulse 1s ease-in-out infinite alternate;
}
@keyframes cursorPulse {
from { transform: scale(1); opacity: 0.8; }
to { transform: scale(1.5); opacity: 1; }
}
/* Responsive Design Ultra */
@media (max-width: 1024px) {
.controls-matrix {
position: static;
transform: none;
margin: 20px;
order: -1;
}
.hud-matrix {
flex-wrap: wrap;
gap: 15px;
}
}
@media (max-width: 768px) {
.cosmic-header {
flex-direction: column;
gap: 15px;
padding: 15px;
}
.ai-companion-matrix {
left: 15px;
right: 15px;
bottom: 15px;
}
}
</style>
</head>
<body>
<div class="custom-cursor" id="customCursor"></div>
<div class="game-container">
<!-- Secuencia de Intro Ultra -->
<div class="intro-matrix" id="introMatrix">
<div class="intro-logo-matrix">RETRO LEGENDS</div>
<div class="intro-subtitle-matrix">🎮 Ultimate Nostalgia Edition 🇦🇷</div>
<div class="loading-matrix">
<div class="loading-progress-matrix"></div>
</div>
</div>
<!-- Header Cósmico -->
<div class="cosmic-header">
<div class="title-matrix">
🇦🇷 RETRO LEGENDS: Ultimate Edition 🎮
</div>
<div class="hud-matrix">
<div class="stat-capsule">
<span class="stat-icon">❤️</span>
<span>VIDA: <span id="playerHealth">100</span></span>
</div>
<div class="stat-capsule">
<span class="stat-icon">🧉</span>
<span>MATE: <span id="mateCount">5</span></span>
</div>
<div class="stat-capsule">
<span class="stat-icon"></span>
<span>SCORE: <span id="gameScore">0</span></span>
</div>
<div class="stat-capsule">
<span class="stat-icon">🏆</span>
<span>NIVEL: <span id="currentLevel">Caminito Matrix</span></span>
</div>
<div class="stat-capsule">
<span class="stat-icon"></span>
<span>COMBO: <span id="comboCount">0</span></span>
</div>
</div>
</div>
<!-- Viewport del Juego -->
<div class="game-viewport">
<canvas id="gameCanvas"></canvas>
<!-- Panel de Controles Matrix -->
<div class="controls-matrix">
<div class="control-group">
<div class="control-title">MOVIMIENTO</div>
<div class="control-item">
<span>Mover:</span>
<span><span class="control-key">WASD</span> / <span class="control-key">↑↓←→</span></span>
</div>
<div class="control-item">
<span>Saltar:</span>
<span><span class="control-key">SPACE</span></span>
</div>
<div class="control-item">
<span>Dash:</span>
<span><span class="control-key">SHIFT</span></span>
</div>
</div>
<div class="control-group">
<div class="control-title">ACCIONES</div>
<div class="control-item">
<span>Atacar:</span>
<span><span class="control-key">Z</span></span>
</div>
<div class="control-item">
<span>Poder Especial:</span>
<span><span class="control-key">X</span></span>
</div>
<div class="control-item">
<span>Usar Mate:</span>
<span><span class="control-key">C</span></span>
</div>
</div>
<div class="control-group">
<div class="control-title">SISTEMA</div>
<div class="control-item">
<span>Chat IA:</span>
<span><span class="control-key">T</span></span>
</div>
<div class="control-item">
<span>Pausa:</span>
<span><span class="control-key">P</span></span>
</div>
<div class="control-item">
<span>Menú:</span>
<span><span class="control-key">ESC</span></span>
</div>
</div>
</div>
</div>
<!-- Compañero IA Matrix -->
<div class="ai-companion-matrix" id="aiCompanionMatrix">
<div class="ai-header-matrix">
<div class="ai-avatar-matrix">🤖</div>
<div class="ai-info-matrix">
<div class="ai-name-matrix">NEXUS PIBE</div>
<div class="ai-status-matrix">IA Compañero Argento Avanzado</div>
</div>
</div>
<div class="ai-message-matrix" id="aiMessageMatrix">
¡Ehhh, pibe! Bienvenido a la experiencia más nostálgica y avanzada que vas a vivir.
Soy NEXUS, tu compañero de aventuras con inteligencia artificial de última generación.
¿Listos para romperla en este universo retro-futurista? ¡Dale que arrancamos! 🚀🇦🇷
</div>
</div>
</div>
<!-- Scripts del Juego Ultra Avanzados -->
<script>
// ===================================================================
// RETRO LEGENDS: Ultimate Edition - Inicialización
// ===================================================================
// Cursor personalizado
document.addEventListener('mousemove', (e) => {
const cursor = document.getElementById('customCursor');
cursor.style.left = e.clientX - 10 + 'px';
cursor.style.top = e.clientY - 10 + 'px';
});
// Inicialización del juego
window.addEventListener('load', () => {
console.log('🚀 Iniciando RETRO LEGENDS: Ultimate Edition...');
// Ocultar intro después de 8 segundos
setTimeout(() => {
document.getElementById('introMatrix').style.display = 'none';
// Inicializar el motor de juego ultra avanzado
const game = new RetroLegendsUltimateEngine();
// Mostrar mensaje de bienvenida de la IA
setTimeout(() => {
document.getElementById('aiCompanionMatrix').classList.add('active');
}, 1000);
console.log('🎮 RETRO LEGENDS: Ultimate Edition - ¡Completamente cargado!');
}, 8000);
});
// Efectos de sonido de interfaz
document.addEventListener('click', () => {
// Aquí iría el sistema de audio para clicks
});
// Efectos de hover para elementos interactivos
document.querySelectorAll('.stat-capsule, .control-key').forEach(element => {
element.addEventListener('mouseenter', () => {
// Aquí irían efectos de sonido de hover
});
});
</script>
<!-- Cargar módulos del juego -->
<script src="core-engine-ultra.js"></script>
<script src="physics-advanced.js"></script>
<script src="ai-companion-advanced.js"></script>
<script src="level-generator-procedural.js"></script>
<script src="audio-system-ultra.js"></script>
<script src="particle-system-advanced.js"></script>
<script src="input-handler-pro.js"></script>
<script src="entity-manager-ultra.js"></script>
<script src="save-system-advanced.js"></script>
</body>
</html>