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; } } }