Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created August 7, 2019 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/911903de14ae13c70c57b39ed93cfa25 to your computer and use it in GitHub Desktop.
Save parzibyte/911903de14ae13c70c57b39ed93cfa25 to your computer and use it in GitHub Desktop.
// Se desencadena cuando se hace click en la imagen
voltear(indiceFila, indiceImagen) {
// Si se está regresando una imagen a su estado original, detener flujo
if (this.esperandoTimeout) {
return;
}
// Si es una imagen acertada, no nos importa que la intenten voltear
if (this.memorama[indiceFila][indiceImagen].acertada) {
return;
}
// Si es la primera vez que la selecciona
if (this.ultimasCoordenadas.indiceFila === null && this.ultimasCoordenadas.indiceImagen === null) {
this.memorama[indiceFila][indiceImagen].mostrar = true;
this.ultimasCoordenadas.indiceFila = indiceFila;
this.ultimasCoordenadas.indiceImagen = indiceImagen;
return;
}
// Si es el que estaba mostrada, lo ocultamos de nuevo
let imagenSeleccionada = this.memorama[indiceFila][indiceImagen];
let ultimaImagenSeleccionada = this.memorama[this.ultimasCoordenadas.indiceFila][this.ultimasCoordenadas.indiceImagen];
if (indiceFila === this.ultimasCoordenadas.indiceFila &&
indiceImagen === this.ultimasCoordenadas.indiceImagen) {
this.memorama[indiceFila][indiceImagen].mostrar = false;
this.ultimasCoordenadas.indiceFila = null;
this.ultimasCoordenadas.indiceImagen = null;
this.aumentarIntento();
return;
}
// En caso de que la haya encontrado, ¡acierta!
// Se basta en ultimaImagenSeleccionada
this.memorama[indiceFila][indiceImagen].mostrar = true;
if (imagenSeleccionada.ruta === ultimaImagenSeleccionada.ruta) {
this.aciertos++;
this.memorama[indiceFila][indiceImagen].acertada = true;
this.memorama[this.ultimasCoordenadas.indiceFila][this.ultimasCoordenadas.indiceImagen].acertada = true;
this.ultimasCoordenadas.indiceFila = null;
this.ultimasCoordenadas.indiceImagen = null;
// Cada que acierta comprobamos si ha ganado
if (this.haGanado()) {
this.indicarVictoria();
}
} else {
// Si no acierta, entonces giramos ambas imágenes
this.esperandoTimeout = true;
setTimeout(() => {
this.memorama[indiceFila][indiceImagen].mostrar = false;
this.memorama[indiceFila][indiceImagen].animacion = false;
this.memorama[this.ultimasCoordenadas.indiceFila][this.ultimasCoordenadas.indiceImagen].mostrar = false;
this.ultimasCoordenadas.indiceFila = null;
this.ultimasCoordenadas.indiceImagen = null;
this.esperandoTimeout = false;
}, SEGUNDOS_ESPERA_VOLTEAR_IMAGEN * 1000);
this.aumentarIntento();
}
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment