public void ejecutarHechizo(int ataque, string nombre) //Recibimos información sobre el ataque y mostramos los resutados de este sobre los jugadores { DelegadoParaChat delegado = new DelegadoParaChat(añadirMensaje); if (nombre == anfitrionPartida) { cartasPartida[1].SetHp(cartasPartida[1].GetHp() - ataque); this.indice = 1; if (cartasPartida[1].GetHp() > 0) //El jugador pierde vida { vidaContrincante1.Text = "Vida: " + Convert.ToString(cartasPartida[1].GetHp()); } else //hostenApp ha ganado la partida { partidaGanada = true; vidaContrincante1.ForeColor = Color.Red; vidaContrincante1.Text = "Vida: 0"; string mensaje = "34/" + nForm + "/" + cartasPartida[0].GetHp() + "/" + anfitrionPartida + "/" + Player2; byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje); server.Send(msg); ocultarBotones(); if (anfitrionPartida == hostEnApp) { resultadoPartida.Text = "Victoria"; } else { resultadoPartida.Text = "Derrota"; } } } else if (nombre == Player2) { cartasPartida[0].SetHp(cartasPartida[0].GetHp() - ataque); this.indice = 0; if (cartasPartida[0].GetHp() > 0) //El jugador pierde vida { vidaAnfitrion.Text = "Vida: " + Convert.ToString(cartasPartida[0].GetHp()); } else //HostenApp ha perdido la partida { partidaGanada = true; vidaAnfitrion.ForeColor = Color.Red; vidaAnfitrion.Text = "Vida: 0"; string mensaje = "34/" + nForm + "/" + cartasPartida[1].GetHp() + "/" + Player2 + "/" + anfitrionPartida; byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje); server.Send(msg); ocultarBotones(); if (Player2 == hostEnApp) { resultadoPartida.Text = "Victoria"; } else { resultadoPartida.Text = "Derrota"; } } } Invoke(delegado, new Object[] { "BOT", "El jugador " + nombre + " ha ejecutado " + cartasPartida[this.indice].GetNombreH() + " restando " + Convert.ToString(ataque) + " de vida al contrincante." }); }
public void SetMensajeChat(string mensajeChat) //Recibe los mensajes para el chat de partida { string[] trozos = mensajeChat.Split('$'); DelegadoParaChat delegado = new DelegadoParaChat(añadirMensaje); Invoke(delegado, new Object[] { trozos[0], trozos[1] }); }
// //Función para atender las peticiones del servidor. // private void AtenderServidor() { while (true) { byte[] msg2 = new byte[80]; server.Receive(msg2); string mssg = Encoding.ASCII.GetString(msg2).Split('\0')[0]; string[] trozos = mssg.Split('-'); int codigo = Convert.ToInt32(trozos[0]); string mensaje = trozos[1]; int cont_f = formularios.Count; switch (codigo) { case 1: //LOGIN string[] piezas = mensaje.Split('/'); int code = Convert.ToInt32(piezas[0]); if (code == 11) { MessageBox.Show("El usuario y la contraseña no coinciden. Por favor intente INCIAR SESIÓN de nuevo."); this.Close(); } else { DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonConectado); matriz.Invoke(delegado, new object[] { code, piezas }); } break; case 2: //ELIMINAR MessageBox.Show(mensaje); break; case 4: // El usuario invitado recibe la invitacion y envia su respuesta correspondiente string[] msg_form = mensaje.Split('/'); forms_s = Convert.ToInt32(msg_form[1]); DialogResult resultado; resultado = MessageBox.Show(msg_form[0] + " te ha enviado una invitación.", "Invitación", MessageBoxButtons.OKCancel); if (resultado == DialogResult.OK) { string message = "5/" + msg_form[0] + "/0"; // + "/" + nform byte[] msg = System.Text.Encoding.ASCII.GetBytes(message); server.Send(msg); } else { string message = "5/" + msg_form[0] + "/1"; byte[] msg = System.Text.Encoding.ASCII.GetBytes(message); server.Send(msg); } break; case 5: //El usuario que ha invitado recibe si el invitado ha aceptado o no string[] pieces = mensaje.Split('/'); int codigoAcepta = Convert.ToInt32(pieces[1]); if (codigoAcepta == 0) { MessageBox.Show(pieces[0] + " ha ACEPTADO tu invitación"); //invitado = pieces[0]; } else { MessageBox.Show(pieces[0] + " ha RECHAZADO tu invitación"); } break; case 6: //Recibe los mensajes del chat pieces = mensaje.Split('/'); DelegadoParaChat delegadoChat = new DelegadoParaChat(PonMensaje); listBox1.Invoke(delegadoChat, new object[] { pieces }); break; case 7: //Pone en marcha los formularios de la partida string[] jugadores = mensaje.Split('/'); jug1 = jugadores[0]; jug2 = jugadores[1]; ThreadStart ts = delegate { PonerEnMarchaFormulario(); }; Thread T = new Thread(ts); T.Start(); break; case 8: //Recibe la tirada y la pone en el tablero del otro jugador string[] jugada = mensaje.Split('/'); int nform = Convert.ToInt32(jugada[0]); int jug = Convert.ToInt32(jugada[1]); int fila = Convert.ToInt32(jugada[2]); int columna = Convert.ToInt32(jugada[3]); CheckForIllegalCrossThreadCalls = false; formularios[nform].TomaRespuesta(jug, fila, columna); break; case 9: //Recibe el ganador string[] ganadors = mensaje.Split('/'); string ganador = (ganadors[0]); int nform_g = Convert.ToInt32(ganadors[1]); formularios[nform_g].TomaGanador(ganador); break; case 10: //Ver jugadores con los que has jugado EF.PonInvokeJugador(mensaje); break; case 11: //Ver todos los jugadores registrados en la base de datos EF.PonInvokeTodosJugadores(mensaje); break; case 12: //Ver jugadores con quien has jugado EF.PonInvokePartidas(mensaje); break; case 13: //Ver las partidas que ha ganado un determiando jugador EF.PonInvokeGanadas(mensaje); break; } } }