Juego de emparejamiento de frutas con HTML, CSS, JavaScript

JavaScriptJavaScriptIntermediate
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a crear un sencillo juego "Fruit for Fun" utilizando HTML, CSS y JavaScript. El juego consiste en encontrar pares de imágenes de frutas al hacer clic en los cuadrados del tablero de juego.

👀 Vista previa

Vista previa del juego de coincidencia de frutas

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo configurar los archivos y directorios del proyecto
  • Cómo implementar la funcionalidad del botón Iniciar para mostrar y ocultar las imágenes de frutas
  • Cómo implementar la funcionalidad de hacer clic en los cuadrados para mostrar las imágenes de frutas
  • Cómo implementar la funcionalidad para comparar las dos imágenes clicadas y actualizar la puntuación en consecuencia
  • Cómo actualizar la visualización de la puntuación en tiempo real

🏆 Logros

Después de completar este proyecto, podrás:

  • Estructurar y organizar un proyecto de desarrollo web
  • Utilizar JavaScript para manipular el DOM y manejar interacciones de usuario
  • Utilizar jQuery para simplificar el código JavaScript y las animaciones
  • Actualizar la interfaz de usuario en tiempo real según la lógica del juego

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/functions("Functions") javascript/DOMManipulationGroup -.-> javascript/dom_select("DOM Selection") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/event_handle("Event Handling") subgraph Lab Skills javascript/comp_ops -.-> lab-445656{{"Juego de emparejamiento de frutas con HTML, CSS, JavaScript"}} javascript/functions -.-> lab-445656{{"Juego de emparejamiento de frutas con HTML, CSS, JavaScript"}} javascript/dom_select -.-> lab-445656{{"Juego de emparejamiento de frutas con HTML, CSS, JavaScript"}} javascript/dom_manip -.-> lab-445656{{"Juego de emparejamiento de frutas con HTML, CSS, JavaScript"}} javascript/event_handle -.-> lab-445656{{"Juego de emparejamiento de frutas con HTML, CSS, JavaScript"}} end

Configurar la estructura del proyecto

En este paso, configurarás los archivos y la estructura del proyecto. Sigue los pasos siguientes para completar este paso:

Abre la carpeta del proyecto. La estructura de directorios es la siguiente:

├──css
│ └── style.css
├── Images
│ ├── apple.png
│ ├── cherry.png
│ ├── grape.png
│ ├── peach.png
│ ├── pear.png
│ ├── strawberry.png
│ ├──tangerine.png
│ └── watermelon.png
├─ js
│ ├── index.js
│ └── jquery-3.6.0.min.js
└── index.html

Haz clic en el botón Go Live en la esquina inferior derecha de WebIDE, para ejecutar el proyecto.

A continuación, abre "Web 8080" en la parte superior de la VM y actualízala manualmente para ver la página. El juego no se ejecuta correctamente cuando haces clic en el botón de inicio, como se muestra a continuación:

Interfaz de juego incompleta

Implementar la funcionalidad de comparación

En este paso, implementarás la funcionalidad para comparar las dos imágenes clicadas. Sigue los pasos siguientes para completar este paso:

  1. Al final del archivo js/index.js, agrega la siguiente función compare():
// Compara dos imágenes entre sí para ver si son iguales
function compare() {
  if ($("#" + images[0]).attr("src") == $("#" + images[1]).attr("src")) {
    score += 2;
    $("#score").text(score);
    // Oculta
    $("#" + images[0])
      .parent()
      .css("visibility", "hidden");
    $("#" + images[1])
      .parent()
      .css("visibility", "hidden");
    images = [];
    foundImage += 2;
  } else {
    score -= 2;
    $("#score").text(score);
    $("#" + images[0]).hide();
    $("#" + images[1]).hide();

    images = [];
  }
}

Esta función compara la fuente de las dos imágenes clicadas. Si son iguales, la puntuación aumenta en 2 y los cuadrados se ocultan. Si no son iguales, la puntuación disminuye en 2 y las imágenes se ocultan. $("#score").text(score) actualiza la visualización de la puntuación en la sección <p>The current number of points is <span id="score">0</span></p> del archivo html en tiempo real.

Implementar la funcionalidad del botón Iniciar

En este paso, implementarás la funcionalidad del botón Iniciar. Sigue los pasos siguientes para completar este paso:

  1. Abre el archivo js/index.js.
  2. En la función startGame(), agrega el siguiente código para mostrar y luego ocultar las imágenes en los cuadrados cuando se hace clic en el botón Iniciar:
function startGame() {
  $(".img-box img").show(1000, function () {
    $(this).hide(1000);
  });
}
  1. En la función startGame(), continúa con el código anterior seguido del siguiente código para ocultar el botón "Iniciar":
// Oculta el botón Iniciar
$("#start").css("visibility", "hidden");

Implementar la funcionalidad de clic

En este paso, implementarás la funcionalidad de hacer clic en los cuadrados. Sigue los pasos siguientes para completar este paso:

  1. Abre el archivo js/index.js.
  2. En la función startGame(), agrega el siguiente código para manejar el evento de clic en los cuadrados:
function startGame() {
  $(".img-box img").show(1000, function () {
    $(this).hide(1000);
  });
  // Oculta el botón Iniciar
  $("#start").css("visibility", "hidden");
  $(".img-box").bind("click", function () {
    var id = $(this).children().attr("id"); // Obtiene el id de la imagen clicada
    images.push(id);

    if ($(this).children().is(":hidden")) {
      $(this).children().show();
    } else {
      images.pop(id);
    }
    if (images.length == 2) {
      setTimeout(compare, 500);
    }
  });
}

Este código agregará el ID de la imagen clicada al array images. Si la imagen está oculta, se mostrará. Si la imagen ya está visible, se eliminará del array images. Cuando haya dos imágenes en el array images, la función compare() se llamará después de una demora de 500 ms.

Después de completar estos pasos, el juego "Fruit for Fun" debería estar completamente funcional y el resultado final es el siguiente:

Demostración del juego terminado
✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.