WEBLEB
Home
Editor
Accedi
Pro
Italiano
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Agile Square
233
sergioarmijo30
Apri nell'Editor
Pubblica il Tuo Codice
10 December 2024
Un codice di 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);