WEBLEB
Inicio
Editora de código
Iniciar sesión
Pro
Español
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Agile Square
230
sergioarmijo30
Abrir en el editor
Publica tu código
Recomendado
10 December 2024
Un código de agilecloud61
HTML
Copy
Juego de Niveles
Nivel:
1
| Monedas:
0
CSS
Copy
* { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #111; display: flex; justify-content: center; align-items: center; height: 100vh; color: white; font-family: sans-serif; } #game { position: relative; width: 800px; height: 600px; background-color: #222; border: 3px solid #fff; overflow: hidden; } .player { position: absolute; width: 40px; height: 40px; background-color: lime; } .obstacle { position: absolute; width: 40px; height: 40px; background-color: red; } .coin { position: absolute; width: 20px; height: 20px; background-color: gold; border-radius: 50%; } #info { position: absolute; top: 10px; left: 10px; font-size: 18px; }
JS
Copy
const game = document.getElementById('game'); const levelDisplay = document.getElementById('level'); const coinsDisplay = document.getElementById('coins'); const player = document.createElement('div'); player.classList.add('player'); game.appendChild(player); let playerX = 50, playerY = 280; let coinsCollected = 0; let currentLevel = 1; let coinGoal = 5; let keys = {}; document.addEventListener('keydown', e => keys[e.key] = true); document.addEventListener('keyup', e => keys[e.key] = false); function movePlayer() { const speed = 3; if (keys['ArrowUp']) playerY -= speed; if (keys['ArrowDown']) playerY += speed; if (keys['ArrowLeft']) playerX -= speed; if (keys['ArrowRight']) playerX += speed; playerX = Math.max(0, Math.min(760, playerX)); playerY = Math.max(0, Math.min(560, playerY)); player.style.left = playerX + 'px'; player.style.top = playerY + 'px'; } function createCoin() { const coin = document.createElement('div'); coin.classList.add('coin'); coin.style.left = Math.random() * 780 + 'px'; coin.style.top = Math.random() * 580 + 'px'; game.appendChild(coin); } function createObstacle(speed) { const obs = document.createElement('div'); obs.classList.add('obstacle'); obs.style.left = '800px'; obs.style.top = Math.random() * 560 + 'px'; game.appendChild(obs); const interval = setInterval(() => { let x = parseInt(obs.style.left); if (x < -40) { clearInterval(interval); obs.remove(); } else { obs.style.left = (x - speed) + 'px'; checkCollision(obs); } }, 20); } function checkCollision(obs) { const p = player.getBoundingClientRect(); const o = obs.getBoundingClientRect(); if ( p.left < o.right && p.right > o.left && p.top < o.bottom && p.bottom > o.top ) { let retroceso = Math.max(1, currentLevel - 5); alert('¡Perdiste! Retrocedes a nivel ' + retroceso); currentLevel = retroceso; restartLevel(); } } function checkCoins() { document.querySelectorAll('.coin').forEach(coin => { const p = player.getBoundingClientRect(); const c = coin.getBoundingClientRect(); if ( p.left < c.right && p.right > c.left && p.top < c.bottom && p.bottom > c.top ) { coin.remove(); coinsCollected++; coinsDisplay.textContent = coinsCollected; if (coinsCollected >= coinGoal) { nextLevel(); } } }); } function nextLevel() { currentLevel++; if (currentLevel > 50) { alert('¡Ganaste el juego completo!'); location.reload(); } restartLevel(); } function restartLevel() { levelDisplay.textContent = currentLevel; coinsCollected = 0; coinsDisplay.textContent = 0; coinGoal = 5 + (currentLevel - 1) * 2; playerX = 50; playerY = 280; document.querySelectorAll('.coin').forEach(c => c.remove()); document.querySelectorAll('.obstacle').forEach(o => o.remove()); for (let i = 0; i < coinGoal; i++) createCoin(); } for (let i = 0; i < coinGoal; i++) createCoin(); setInterval(() => { movePlayer(); checkCoins(); }, 20); setInterval(() => { createObstacle(currentLevel + 2); }, 1500);