Edita código
Copiar al portapapeles
Ejecutar »
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Juego de Memoria</title> <style> body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; } .game-container { max-width: 600px; text-align: center; } .game-board { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 20px; } .card { width: 100%; aspect-ratio: 1 / 1; background-color: rgba(1,1,1,0); display: flex; justify-content: center; align-items: center; cursor: pointer; font-size: 0; transition: transform 0.3s; border-radius: 5px; position: relative; overflow: hidden; } .card img { max-width: 90%; max-height: 90%; display: none; border-radius: 5px; } .card .card-back { position: absolute; width: 100%; height: 100%; background-image: url('imagenes/origami.png'); background-size: cover; background-position: center; } .card.flipped img { display: block; } .card.flipped .card-back { display: none; } .card.flipped { transform: rotateY(180deg); background-color: #fff; } #congratulations { display: none; margin-top: 20px; padding: 20px; background-color: #e6f3e6; border-radius: 5px; } #restart-button { padding: 10px 20px; font-size: 16px; cursor: pointer; background-color: #4CAF50; color: white; border: none; border-radius: 5px; transition: background-color 0.3s; } #restart-button:hover { background-color: #45a049; } </style> </head> <body> <div class="game-container"> <h1>Juego de Memoria</h1> <div id="game-board" class="game-board"> <!-- Las cartas se generarán dinámicamente con JavaScript --> </div> <div id="congratulations"> <h2>¡Felicidades!</h2> <p>Has completado el juego de memoria.</p> </div> <button id="restart-button">Reiniciar juego</button> </div> <audio id="audio-bien" src="audios/bien.mp3"></audio> <audio id="audio-mal" src="audios/mal.mp3"></audio> <script> // Array de todas las imágenes disponibles const todasLasImagenes = [ 'imagenes/1.webp', 'imagenes/2.webp', 'imagenes/3.webp', 'imagenes/4.webp', 'imagenes/5.webp', 'imagenes/6.webp', 'imagenes/7.webp', 'imagenes/8.webp', 'imagenes/9.webp', 'imagenes/10.webp', 'imagenes/11.webp', 'imagenes/12.webp', 'imagenes/13.webp', 'imagenes/14.webp', 'imagenes/15.webp', 'imagenes/16.webp', 'imagenes/17.webp', 'imagenes/18.webp', 'imagenes/19.webp', 'imagenes/20.webp','imagenes/tigre.png' ]; let cartasVolteadas = []; let parejasEncontradas = 0; const audioBien = document.getElementById('audio-bien'); const audioMal = document.getElementById('audio-mal'); // Función para seleccionar 10 imágenes aleatorias function seleccionarImagenesAleatorias(imagenes, cantidad) { const imagenesAleatorias = [...imagenes]; for (let i = imagenesAleatorias.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [imagenesAleatorias[i], imagenesAleatorias[j]] = [imagenesAleatorias[j], imagenesAleatorias[i]]; } return imagenesAleatorias.slice(0, cantidad); } // Función para barajar un array function barajar(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } } // Función para voltear una carta function voltearCarta() { if (cartasVolteadas.length < 2 && !this.classList.contains('flipped')) { this.classList.add('flipped'); cartasVolteadas.push(this); if (cartasVolteadas.length === 2) { setTimeout(comprobarCoincidencia, 500); } } } // Función para comprobar si hay coincidencia function comprobarCoincidencia() { const [carta1, carta2] = cartasVolteadas; const coinciden = carta1.querySelector('img').src === carta2.querySelector('img').src; if (coinciden) { audioBien.play(); carta1.removeEventListener('click', voltearCarta); carta2.removeEventListener('click', voltearCarta); parejasEncontradas++; if (parejasEncontradas === 10) { document.getElementById('congratulations').style.display = 'block'; } } else { audioMal.play(); setTimeout(() => { carta1.classList.remove('flipped'); carta2.classList.remove('flipped'); }, 1000); } cartasVolteadas = []; } // Función para iniciar el juego function iniciarJuego() { const imagenesSeleccionadas = seleccionarImagenesAleatorias(todasLasImagenes, 10); const parejas = [...imagenesSeleccionadas, ...imagenesSeleccionadas]; barajar(parejas); const tablero = document.getElementById('game-board'); tablero.innerHTML = ''; parejasEncontradas = 0; document.getElementById('congratulations').style.display = 'none'; parejas.forEach((imagen, index) => { const carta = document.createElement('div'); carta.classList.add('card'); carta.innerHTML = ` <img src="${imagen}" alt="Carta ${index + 1}"> <div class="card-back"></div> `; carta.addEventListener('click', voltearCarta); tablero.appendChild(carta); }); } // Función para reiniciar el juego function reiniciarJuego() { iniciarJuego(); } // Event listener para el botón de reinicio document.getElementById('restart-button').addEventListener('click', reiniciarJuego); // Inicia el juego cuando se carga la página document.addEventListener('DOMContentLoaded', iniciarJuego); </script> </body> </html>
Resultado
Instrucciones