Exemple #1
0
        // Este método desencadena la secuencia de ataque: Atacar_Enemigo -> Atacar_Jugador
        private void Atacar_Enemigo_Click(object sender, RoutedEventArgs e)
        {
            bool atk1, enem1;

            /*
             * Este timer será utilizado para controlar el tiempo de aparición
             * de los sprites en pantalla, así como la habilitación de los botones de ataque
             *
             * Ejemplo de secuencia de ataque:
             *  El jugador ataca e inicia aquí el timer, a los 1500ms se dispara
             *  el método del modelo invocado en el Tick, que elimina el sprite de su ataque
             *  y detiene el timer. Se vuelve a reactivar cuando acto seguido el enemigo ataca.
             *  Finalmente se detiene tras haber sido eliminado el sprite del ataque enemigo.
             */

            timer          = new DispatcherTimer();
            timer.Tick    += AnimacionPorTurno;
            timer.Interval = new TimeSpan(0, 0, 0, 0, 1500);
            timer.Start();

            // Se determina el botón de los ataques que se ha pulsado
            if (sender.Equals(Atk1_Enem1))
            {
                atk1  = true;
                enem1 = true;
                Atk1_Enem1.IsEnabled = false;
                Atk2_Enem1.IsEnabled = false;
                Atk1_Enem2.IsEnabled = false;
                Atk2_Enem2.IsEnabled = false;
                eliminado1           = modelo.AtacarAlEnemigo(miLienzo, enemigo1, jugador, atk1, enem1);
            }
            else if (sender.Equals(Atk2_Enem1))
            {
                atk1  = false;
                enem1 = true;
                Atk1_Enem1.IsEnabled = false;
                Atk2_Enem1.IsEnabled = false;
                Atk1_Enem2.IsEnabled = false;
                Atk2_Enem2.IsEnabled = false;
                eliminado1           = modelo.AtacarAlEnemigo(miLienzo, enemigo1, jugador, atk1, enem1);
            }
            else if (sender.Equals(Atk1_Enem2))
            {
                atk1  = true;
                enem1 = false;
                Atk1_Enem1.IsEnabled = false;
                Atk2_Enem1.IsEnabled = false;
                Atk1_Enem2.IsEnabled = false;
                Atk2_Enem2.IsEnabled = false;
                eliminado2           = modelo.AtacarAlEnemigo(miLienzo, enemigo2, jugador, atk1, enem1);
            }
            else if (sender.Equals(Atk2_Enem2))
            {
                atk1  = false;
                enem1 = false;
                Atk1_Enem1.IsEnabled = false;
                Atk2_Enem1.IsEnabled = false;
                Atk1_Enem2.IsEnabled = false;
                Atk2_Enem2.IsEnabled = false;
                eliminado2           = modelo.AtacarAlEnemigo(miLienzo, enemigo2, jugador, atk1, enem1);
            }

            // Este flag es utilizado para controlar la reactivación de los botones y eliminar el sprite
            // del ataque enemigo. Se pone a true cuando la animacion del ataque enemigo ha terminado
            modelo.reactivarAtaques = false;

            // Este metodo resta visualmente los ataques fuertes disponibles del jugador
            modelo.RestarAtaquesFuertes(atkF1, atkF2, atkF3);
        }