/// <summary> /// este metodo sirve para cambiar el estado del atributo descubierta de la cartaseleccionada /// y comprobar si es la primera de las dos, si es asi no compruebo si estáa su pareja y si es la seguinda , /// comprobar si son parejas mientras bloquear el resto de las cartas para que no se les pueda dar vueltas , /// si lo son mantenerlas volteadas y bloquear estas dos para que no se les vuelvan a dar clic y desbloquear /// el resto de las cartas para seguir jugando /// /// </summary> private async void comprobarJugada() { //cuando hay mas de una pareja de cartas abiertas se puede cerrarlas dando clic en dos de ellas //cuando encuentras una pareja y vuelves a dar a esas dos parejas te va sumando la pareja encontrada //por eso pongo el if (!CartaSeleccionada.Descubierta) if (!CartaSeleccionada.Descubierta) { //comprobar si es la primera o la segunda if (carta1 == null) { carta1 = cartaSeleccionada; carta1.Descubierta = true; } else if (carta2 == null) { carta2 = cartaSeleccionada; carta2.Descubierta = true; } } //comprobamos si son iguales if (carta1 != null && carta2 != null) { this.isPartidaActiva = false; NotifyPropertyChanged("IsPartidaActiva"); if (carta2.IdCarta == carta1.IdCarta) { parejasEncontradas++; carta1 = null; carta2 = null; } else { //para que espere un poco antes de dar la vuelta Task task = Task.Delay(500); await task.AsAsyncAction(); carta1.Descubierta = false; carta2.Descubierta = false; carta1 = null; carta2 = null; //para que deseleccione la carta seleccionada para poder seleccionarla otra vez cartaSeleccionada = null; NotifyPropertyChanged("CartaSeleccionada"); } this.isPartidaActiva = true; NotifyPropertyChanged("IsPartidaActiva"); } if (parejasEncontradas == 6) { this.tiempo.Stop(); this.isPartidaActiva = false; NotifyPropertyChanged("IsPartidaActiva"); mensajeGanador(); } }
/// <summary> /// este metodo sirve para cambiar el estado del atributo descubierta de la cartaseleccionada /// y comprobar si es la primera de las dos, si es asi no compruebo si estáa su pareja y si es la seguinda , /// comprobar si son parejas mientras bloquear el resto de las cartas para que no se les pueda dar vueltas , /// si lo son mantenerlas volteadas y bloquear estas dos para que no se les vuelvan a dar clic y desbloquear /// el resto de las cartas para seguir jugando /// /// </summary> private async void comprobarJugada() { cartaSeleccionada.Descubierta = true; //comprobar si es la primera o la segunda if (carta1 == null) { carta1 = cartaSeleccionada; carta1.Descubierta = true; } else if (carta2 == null) { carta2 = cartaSeleccionada; carta2.Descubierta = true; } //comprobamos si son iguales if (carta1 != null && carta2 != null) { this.isPartidaActiva = false; NotifyPropertyChanged("IsPartidaActiva"); if (carta2.IdCarta == carta1.IdCarta) { parejasEncontradas++; carta1 = null; carta2 = null; } else { //para que espere un poco antes de dar la vuelta Task task = Task.Delay(500); await task.AsAsyncAction(); carta1.Descubierta = false; carta2.Descubierta = false; carta1 = null; carta2 = null; //para que deseleccione la carta seleccionada para poder seleccionarla otra vez cartaSeleccionada = null; NotifyPropertyChanged("CartaSeleccionada"); } this.isPartidaActiva = true; NotifyPropertyChanged("IsPartidaActiva"); } if (parejasEncontradas == 6) { this.tiempo.Stop(); string res = await MensajeGanador(); if (res != null) { guardarResultado(); } //else //{ // this.isPartidaActiva = false; // NotifyPropertyChanged("IsPartidaActiva"); //} this.isPartidaActiva = false; NotifyPropertyChanged("IsPartidaActiva"); } }