WEBLEB
होम
संपादक
लॉग इन करें
Pro
हिंदी
English
Français
Español
Português
Deutsch
Italiano
हिंदी
एजाइल स्क्वायर
229
sergioarmijo30
संपादक में खोलें
अपना कोड प्रकाशित करें
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);