Skip to content

nidaela/CDMX011-memory-match

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Memory Match Game

Índice


1. Preámbulo

El juego Memory Match, también conocido como Concentration, Match Match, Match Up, Memory, entre otros, es un juego de cartas en el que todas las cartas se ponen cara abajo sobre una superficie y se le dan la vuelta a dos cartas en cada turno. El objetivo del juego es destapar parejas de cartas que coincidan.

Concentration (card game)

Ejemplos:

2. Resumen del proyecto

En este proyecto construirás una versión web del juego Memory Match, en la que una jugadora pueda jugar sola, en el navegador.

El objetivo principal de este proyecto es que aprendas a diseñar y construir una interfaz web basada en data e interacción con la usuaria.

3. Objetivos de aprendizaje

Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo.

Web APIs

JavaScript

  • Uso de linter (ESLINT)

  • Uso de identificadores descriptivos (Nomenclatura y Semántica)

  • Diferenciar entre expresiones (expressions) y sentencias (statements)

Control de Versiones (Git y GitHub)

  • Git: Instalación y configuración

  • Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)

  • Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)

  • GitHub: Creación de cuenta y repos, configuración de llaves SSH

  • GitHub: Despliegue con GitHub Pages

    Links

  • GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)

4. Consideraciones generales

  • Este proyecto se debe resolverse de forma individual.
  • El proyecto será entregado subiendo tu código a GitHub (commit/push) y la interfaz será desplegada usando GitHub Pages.
  • Tiempo para completarlo: Toma como referencia 3 semanas.

5. Criterios de aceptación mínimos del proyecto

Los criterios para considerar que has completado este proyecto son:

Implementación de la Interfaz de Usuario (HTML/CSS/JS)

No es necesario que construyas la interfaz de usuario desde 0, por eso este proyecto viene con un prototipo de alta fidelidad en HTML/CSS.

Tu tiempo de hacking es escaso, así que deberás priorizar en los OAs que necesitas trabajar.

Como mínimo, tu implementación debe:

  1. Dado un set de cartas, barajar las cartas y mostrarlas en la interfaz usando el algoritmo de Fisher-Yates.
  2. Permitir al usuario destapar máximo 2 cartas a la vez, eso quiere decir que no pueden haber mas de 3 cartas giradas al mismo tiempo.
  3. Al girar las cartas dejar las cartas que coincidan giradas.
  4. Indicar al usuario que ganó cuando haya girado todas las cartas.

6. Consideraciones técnicas

La lógica del proyecto debe estar implementada completamente en JavaScript, HTML y CSS. En este proyecto NO está permitido usar librerías o frameworks, solo vanilla JavaScript.

Para iniciar un nuevo juego, siempre tendremos que barajar las cartas antes de pintarlas en la pantalla. Para eso, te invitamos a que explores algoritmos existentes para este tipo de operación (llamada shuffle en inglés), como por ejemplo el algoritmo de Fisher-Yates (aka Knuth).

En este proyecto no se espera que inventes o implementes tu propio algoritmo para barajar las cartas, si no que googlees, veas opciones existentes, consideres opciones y adaptes una a tu proyecto (agregando una función shuffle que se pueda usar en tu aplicación).

El boilerplate contiene una estructura de archivos como punto de partida, asi como el prototipo de alta fidelidad en HTML/CSS y la configuración de dependencias.

.
├── .babelrc
├── .editorconfig
├── .eslintrc
├── .gitignore
├── package.json
├── README.md
└── src
    ├── components
    │   ├── App.js
    │   └── App.spec.js
    ├── data
    │   ├── pokemon
    │   │   ├── pokemon.js
    │   │   └── pokemon.json
    │   ├── README.md
    │   └── webdev
    │       ├── webdev.js
    │       └── webdev.json
    ├── index.html
    ├── main.js
    └── style.css

src/index.html

A diferencia del proyecto anterior, en este archivo hemos incluido la estructura HTML que sera requerida como punto de partida.

src/style.css

A diferencia del proyecto anterior, en este proyecto hemos dado estilos por lo que no deberás preocuparte por ello, de tal forma que tu no necesitas hacerlo y podrás dedicarte a navegar el garabato desde JS y el DOM.

src/main.js

Recomendamos usar src/main.js como punto de entrada de tu aplicación. El boilerplate incluye este archivo para conectar o montar el componente App en el DOM. De esta forma podremos hacer pruebas unitarias de nuestros componentes sin necesidad de que estén conectados a un DOM global.

Esta no es la única forma de dividir tu código, puedes usar más archivos y carpetas, siempre y cuando la estructura sea clara para tus compañeras.

src/components/App.js

Este archivo contiene un componente de ejemplo que muestra cómo podemos representar un componente como una función que retorna un HTMLElement. A la hora de construir interfaces es útil pensar en términos de componentes o vistas que podemos ir anidando unas dentro de otras. Te invitamos a que pienses qué componentes o cajitas necesitas para construir tu aplicación y que vayas agregando componentes en el directorio components para implementar cada uno de ellos. Aunque, otra vez, la forma de organizar tu archivos depende al final de tí y de tu equipo. Hay muchas formas de hacerlo, y el boilerplate es solo una sugerencia 🙊.

src/components/App.spec.js

Este archivo muestra cómo podemos crear archivos con especificaciones (expresadas como pruebas unitarias) de nuestros componentes.

src/data

En esta carpeta hay data con sets de cartas de ejemplo que puedes usar en tu aplicación, así como información sobre cómo agregar tus propios sets. Encontrarás una carpeta por cada set, y dentro de cada carpeta dos archivos: uno con la extensión .js y otro .json. Ambos archivos contienen la misma data; la diferencia es que el .js lo usaremos a través de un import, mientras que el .json está ahí para opcionalmente cargar la data de forma asíncrona con fetch().

8. Pistas, tips y lecturas complementarias

Primeros pasos

Cuando ya estés lista para codear, te sugerimos empezar de esta manera:

  1. Debes hacer un 🍴 fork del repo de tu cohort, tus coaches te compartirán un link a un repo y te darán acceso de lectura en ese repo.

  2. ⬇️ Clona tu fork a tu computadora (copia local) con el siguiente comando

    git clone --branch js git@github.com:Laboratoria/CDMX011-memory-match.git
  3. 📦 Instala las dependencias del proyecto con el comando npm install. Esto asume que has instalado Node.js (que incluye npm).

  4. Si todo ha ido bien, deberías poder ejecutar las 🚥 pruebas unitarias (unit tests) con el comando npm test.

  5. Para ver la interfaz de tu programa en el navegador, usa el comando npm start para arrancar el servidor web y dirígete a http://localhost:5000 en tu navegador.

  6. A codear se ha dicho! 🚀

Contenido de referencia

Desarrollo Front-end

Herramientas

Organización del Trabajo

9. Checklist

  • Usa VanillaJS.
  • Pasa linter (npm run pretest)
  • Pasa tests (npm test)
  • UI: Muestra cartas barajadas correctamente.
  • UI: Permite al usuario destapar las cartas de 2 en 2.
  • UI: Deja destapadas las cartas que coincidan al destaparlas.
  • UI: Indica al usuario que ganó cuando sea relevante.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 47.5%
  • JavaScript 44.2%
  • CSS 8.3%