示例#1
0
        private void timer_Tick(object sender, EventArgs e)
        {       //Timer que controla los turnos y ejecuta las ordenes
            contador = contador + 1;
            bool Recibido = bt.OrdenesRecibidas();

            if (contador == 1)
            {
                PreMatch(EquipoJugador1, Jugador1, EquipoJugador2, Jugador2);
            }
            if (contador == 10)
            {
                panel1.Controls.Clear();
                Bitmap campo = new Bitmap(directorio + "\\UI\\campo.png");  //Carga el campo y los pokemons y permite empezar a luchar
                panel1.BackgroundImage = campo;
                Player1.PlayLooping();
            }
            if (contador == 14)
            {
                SpawnPokemon2(PokemonLuchando2);
            }
            if (contador == 18)
            {
                SpawnPokemon1(PokemonLuchando1);
                bt.InicioTurno();
            }
            if (Recibido == true)
            {
                if (Procesado == false)
                {
                    ordenes = bt.ProcesarOrdenes(EquipoJugador1, EquipoJugador2, PokemonLuchando1, PokemonLuchando2);
                }
                if ((ordenes[0] == "Cambio") && (ordenes[1] == "Cambio"))       //Se ejecuta si los dos cambian
                {
                    if (ordenes[0] == "Cambio" && !Orden1Done)
                    {
                        ChangePokemon(Jugador1, Convert.ToInt32(ordenes[2]), Convert.ToInt32(ordenes[3]));
                        numPokemonLuchandoPlayer1 = Convert.ToInt32(ordenes[3]);        //Cambia el primer pokemon
                        Orden1Done       = true;
                        TimerUltimaOrden = 0;
                        timer1.Start();
                    }
                    if ((ordenes[1] == "Cambio") && (TimerUltimaOrden > 0) && !Orden2Done)
                    {
                        ChangePokemon(Jugador2, Convert.ToInt32(ordenes[4]), Convert.ToInt32(ordenes[5]));  //Cambia el segundo pokemon
                        numPokemonLuchandoPlayer2 = Convert.ToInt32(ordenes[5]);
                        Orden2Done = true;
                        timer1.Stop();
                        TimerUltimaOrden = 0;
                        timer1.Start();
                    }
                }
                if ((ordenes[0] == "Ataque") && (ordenes[1] == "Ataque"))
                {       //Se ejecuta si los dos atacan
                    string AtacaPrimero = ordenes[2];
                    if (AtacaPrimero == Jugador1)
                    {
                        if (!Orden1Done)
                        {
                            double eficacia = bt.CalcularDebilidad(PokemonLuchando1.moveSet.BuscarMovimiento(ordenes[5]).Tipo, PokemonLuchando2.Tipo1, PokemonLuchando2.Tipo2);
                            string add      = " ";
                            if (eficacia == 0)
                            {
                                add = "No ha tenido ningún efecto";
                            }
                            else if (eficacia == 0.5)
                            {
                                add = "No es muy eficaz";
                            }
                            else if (eficacia == 1)
                            {
                                add = " ";                  //Muestra la eficacia del movimiento
                            }
                            else if (eficacia == 2)
                            {
                                add = "Es muy eficaz!";
                            }
                            else if (eficacia == 4)
                            {
                                add = "Es super eficaz!";
                            }
                            Notif.Text = PokemonLuchando1.Nombre + " ha usado " + ordenes[5] + " " + add;
                            PokemonLuchando2.PSactuales -= Convert.ToInt32(ordenes[3]); //Restamos a los PS el daño
                            ActualizarBarraSalud2(PokemonLuchando2, barrasalud2);
                            TimerUltimaOrden = 0;
                            Orden1Done       = true;
                            timer1.Start();             //Empezamos el timer para ejecutar la segunda orden
                        }
                    }
                    if ((TimerUltimaOrden > 0) && (!Orden2Done) && ((AtacaPrimero == Jugador1)))
                    {
                        if (ordenes[4] != "debilitado")     //Ejecutamos la segunda orden si no se ha debilitado
                        {
                            double eficacia = bt.CalcularDebilidad(PokemonLuchando2.moveSet.BuscarMovimiento(ordenes[6]).Tipo, PokemonLuchando1.Tipo1, PokemonLuchando1.Tipo2);
                            string add      = " ";
                            if (eficacia == 0)
                            {
                                add = "No ha tenido ningún efecto";
                            }
                            else if (eficacia == 0.5)
                            {
                                add = "No es muy eficaz";
                            }
                            else if (eficacia == 1)
                            {
                                add = " ";
                            }
                            else if (eficacia == 2)
                            {
                                add = "Es muy eficaz!";
                            }
                            else if (eficacia == 4)
                            {
                                add = "Es super eficaz!";
                            }
                            Notif.Text = PokemonLuchando2.Nombre + " ha usado " + ordenes[6] + " " + add;
                            PokemonLuchando1.PSactuales -= Convert.ToInt32(ordenes[4]);
                            ActualizarBarraSalud1(PokemonLuchando1, barrasalud1);
                        }
                        Orden2Done = true;
                        timer1.Stop();
                        TimerUltimaOrden = 0;
                        timer1.Start();
                    }
                    if (AtacaPrimero == Jugador2)
                    {
                        if (!Orden2Done)
                        {
                            double eficacia = bt.CalcularDebilidad(PokemonLuchando2.moveSet.BuscarMovimiento(ordenes[6]).Tipo, PokemonLuchando1.Tipo1, PokemonLuchando1.Tipo2);
                            string add      = " ";
                            if (eficacia == 0)
                            {
                                add = "No ha tenido ningún efecto";
                            }
                            else if (eficacia == 0.5)
                            {
                                add = "No es muy eficaz";
                            }
                            else if (eficacia == 1)
                            {
                                add = " ";
                            }
                            else if (eficacia == 2)
                            {
                                add = "Es muy eficaz!";
                            }
                            else if (eficacia == 4)
                            {
                                add = "Es super eficaz!";
                            }
                            Notif.Text = PokemonLuchando2.Nombre + " ha usado " + ordenes[6] + " " + add;
                            PokemonLuchando1.PSactuales -= Convert.ToInt32(ordenes[4]);
                            ActualizarBarraSalud1(PokemonLuchando1, barrasalud1);
                            TimerUltimaOrden = 0;
                            timer1.Start();
                            Orden2Done = true;
                        }
                    }
                    if ((TimerUltimaOrden > 0) && (!Orden1Done) && (AtacaPrimero == Jugador2))
                    {
                        if (ordenes[3] != "debilitado")
                        {
                            double eficacia = bt.CalcularDebilidad(PokemonLuchando1.moveSet.BuscarMovimiento(ordenes[5]).Tipo, PokemonLuchando2.Tipo1, PokemonLuchando2.Tipo2);
                            string add      = " ";
                            if (eficacia == 0)
                            {
                                add = "No ha tenido ningún efecto";
                            }
                            else if (eficacia == 0.5)
                            {
                                add = "No es muy eficaz";
                            }
                            else if (eficacia == 1)
                            {
                                add = " ";
                            }
                            else if (eficacia == 2)
                            {
                                add = "Es muy eficaz!";
                            }
                            else if (eficacia == 4)
                            {
                                add = "Es super eficaz!";
                            }
                            Notif.Text = PokemonLuchando1.Nombre + " ha usado " + ordenes[5] + " " + add;
                            PokemonLuchando2.PSactuales -= Convert.ToInt32(ordenes[3]);
                            ActualizarBarraSalud2(PokemonLuchando2, barrasalud2);
                        }
                        Orden1Done = true;
                        timer1.Stop();
                        TimerUltimaOrden = 0;
                        timer1.Start();
                    }
                }
                if (!((ordenes[0] == "Ataque") && (ordenes[1] == "Ataque")) && !((ordenes[0] == "Cambio") && (ordenes[1] == "Cambio")))
                {       //Se ejecuta si uno de los dos cambia y el otro ataca
                    if (ordenes[7] == Jugador1)
                    {
                        if (ordenes[0] == "Cambio" && !Orden1Done)
                        {
                            ChangePokemon(Jugador1, Convert.ToInt32(ordenes[2]), Convert.ToInt32(ordenes[3]));
                            numPokemonLuchandoPlayer1 = Convert.ToInt32(ordenes[3]);
                            Orden1Done       = true;        //Primero cambiamos al pokemon
                            TimerUltimaOrden = 0;
                            timer1.Start();
                        }
                    }

                    else if (ordenes[7] == Jugador2 && !Orden2Done)
                    {
                        ChangePokemon(Jugador2, Convert.ToInt32(ordenes[4]), Convert.ToInt32(ordenes[5]));
                        numPokemonLuchandoPlayer2 = Convert.ToInt32(ordenes[5]);
                        Orden2Done = true;
                        timer1.Start();
                        TimerUltimaOrden = 0;
                    }

                    if ((TimerUltimaOrden > 0) && !Orden2Done)
                    {
                        double eficacia = bt.CalcularDebilidad(PokemonLuchando2.moveSet.BuscarMovimiento(ordenes[6]).Tipo, PokemonLuchando1.Tipo1, PokemonLuchando1.Tipo2);
                        string add      = " ";
                        if (eficacia == 0)
                        {
                            add = "No ha tenido ningún efecto";
                        }
                        else if (eficacia == 0.5)
                        {
                            add = "No es muy eficaz";
                        }
                        else if (eficacia == 1)             //Por ultimo hacemos el ataque
                        {
                            add = " ";
                        }
                        else if (eficacia == 2)
                        {
                            add = "Es muy eficaz!";
                        }
                        else if (eficacia == 4)
                        {
                            add = "Es super eficaz!";
                        }
                        Notif.Text = PokemonLuchando2.Nombre + " ha usado " + ordenes[6] + " " + add;
                        PokemonLuchando1.PSactuales -= Convert.ToInt32(ordenes[4]);
                        ActualizarBarraSalud1(PokemonLuchando1, barrasalud1);
                        TimerUltimaOrden = 0;
                        timer1.Stop();
                        Orden2Done = true;
                        timer1.Start();
                    }
                    if ((TimerUltimaOrden > 0) && !Orden1Done)
                    {
                        double eficacia = bt.CalcularDebilidad(PokemonLuchando1.moveSet.BuscarMovimiento(ordenes[6]).Tipo, PokemonLuchando2.Tipo1, PokemonLuchando2.Tipo2);
                        string add      = " ";
                        if (eficacia == 0)
                        {
                            add = "No ha tenido ningún efecto";
                        }
                        else if (eficacia == 0.5)
                        {
                            add = "No es muy eficaz";
                        }
                        else if (eficacia == 1)
                        {
                            add = " ";
                        }
                        else if (eficacia == 2)
                        {
                            add = "Es muy eficaz!";
                        }
                        else if (eficacia == 4)
                        {
                            add = "Es super eficaz!";
                        }
                        Notif.Text = PokemonLuchando1.Nombre + " ha usado " + ordenes[6] + " " + add;
                        PokemonLuchando2.PSactuales -= Convert.ToInt32(ordenes[3]);
                        ActualizarBarraSalud2(PokemonLuchando2, barrasalud2);
                        TimerUltimaOrden = 0;
                        timer1.Stop();
                        Orden1Done = true;
                        timer1.Start();
                    }
                }
            }
            if (Orden1Done && Orden2Done && TimerUltimaOrden > 0)
            {
                timer1.Stop();
                TimerUltimaOrden = 0;
                Procesado        = false;   //Cuando los dos han hecho su orden, aumentamo en 1 el turno y reseteamos el Battle manager
                bt.IncreaseTurno();         //para recibir ordenes otra vez
                bt.ResetOrders();
                bt.InicioTurno();
                Notif.Text = "Elige una accion";
                Orden1Done = false;
                Orden2Done = false;
                if (PokemonLuchando1.PSactuales <= 0)
                {
                    SpritePokemon1.Visible = false;
                    Notif.Text             = "Tu Pokemon se ha debilitado, selecciona otro"; //Si uno se debilita obliga a cambiar al otro
                    debilitado             = true;
                    if (numPokemonLuchandoPlayer1 == 0)
                    {
                        pokeball1.Image = (Image)pokeballdebilitado;
                    }
                    if (numPokemonLuchandoPlayer1 == 1)
                    {
                        pokeball2.Image = (Image)pokeballdebilitado;
                    }
                    if (numPokemonLuchandoPlayer1 == 2)
                    {
                        pokeball3.Image = (Image)pokeballdebilitado;
                    }
                }
                if (PokemonLuchando2.PSactuales <= 0)
                {
                    SpritePokemon2.Visible = false;
                    if (numPokemonLuchandoPlayer2 == 0)
                    {
                        pokeball4.Image = (Image)pokeballdebilitado;
                    }
                    if (numPokemonLuchandoPlayer2 == 1)
                    {
                        pokeball5.Image = (Image)pokeballdebilitado;
                    }
                    if (numPokemonLuchandoPlayer2 == 2)
                    {
                        pokeball6.Image = (Image)pokeballdebilitado;
                    }
                }
                if (EquipoJugador1.PokemonsRestantes() == 0)
                {
                    Notif.Text = "Has perdido, finalizando partida";
                }
                if (EquipoJugador2.PokemonsRestantes() == 0)
                {
                    Notif.Text    = "Has ganado, finalizando partida";
                    PartidaGanada = true;
                    MessageBox.Show("Has ganado, finalizando partida");
                }
                label1.Text = Convert.ToString(bt.GetTurnos());     //El que gana envia los datos al servidor para guardar la partida
                if (PartidaGanada == true)
                {
                    string   Ganador;
                    string   Perdedor;
                    int      PokemonsRestantes;
                    DateTime thisDay = DateTime.Today; //Fecha de hoy obtenida del programa
                    string   date    = thisDay.ToString("d");
                    string[] fecha   = date.Split('/');
                    string   dia     = fecha[0];
                    string   mes     = fecha[1];
                    string   año     = fecha[2];
                    string   date2   = dia + "." + mes + "." + año;
                    if (EquipoJugador1.PokemonsRestantes() == 0)
                    {
                        Ganador           = Jugador2;
                        Perdedor          = Jugador1;
                        PokemonsRestantes = EquipoJugador2.PokemonsRestantes();
                    }
                    else
                    {
                        Ganador           = Jugador1;
                        Perdedor          = Jugador2;
                        PokemonsRestantes = EquipoJugador1.PokemonsRestantes();
                    }

                    string mensaje = "11/" + "1" + "," + Convert.ToString(ID) + "," + Jugador1 + "," + "2" + "," + date2 + "," + Convert.ToString(bt.GetTurnos()) + "," + Ganador + "," + Perdedor + "," + Convert.ToString(PokemonsRestantes);
                    byte[] msg     = System.Text.Encoding.ASCII.GetBytes(mensaje);
                    Server.Send(msg);
                    this.Close();
                    PartidaGanada = false;
                }
            }
        }