WEBLEB
Startseite
Editor
Anmelden
Pro
Deutsch
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Agile Square
227
sergioarmijo30
Im Editor öffnen
Veröffentlichen Sie Ihren Code
Empfohlen
10 December 2024
Ein Code von 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);