private void LoSocket_msgReceived(object sender, EventArgs e) { try { //Obtenems la pelota del vecino ClSockets temp = (ClSockets)sender; datosPelota = temp.data; Ball pelota = JsonConvert.DeserializeObject <Ball>(datosPelota); BeginInvoke((Action) delegate { pelota.positionX = ConvertRange(0, pelota.resolutionX, 0, Screen.PrimaryScreen.Bounds.Width, pelota.positionX); pelota.positionY = ConvertRange(0, pelota.resolutionY, 0, Screen.PrimaryScreen.Bounds.Height, pelota.positionY); pelota.movementX = -pelota.movementX; if (pelota.movementX < 0) { pelota.positionX = pelota.positionX - pelota.diameter; } pelota.diameter = ConvertRange(0, pelota.resolutionX, 0, Screen.PrimaryScreen.Bounds.Width, pelota.diameter); ClBall pelotaui = new ClBall(Color.FromArgb(pelota.color), pelota.creator, pelota.movementX, pelota.movementY, pelota.diameter, this, 30, loPaddle, pelota.positionX, pelota.positionY, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, pelota.life); pelotaui.wallhit += LoBall_wallhit; }); } catch { } }
private void LoBall_wallhit(object sender, EventArgs e) { try { ClBall loBall = (ClBall)sender; Ball ball; //Miramos si hay paredes en la partida if (!wallsExist) { loBall.PararPelota(); ball = new Ball { color = loBall.Color.ToArgb(), diameter = loBall.Diametre, creator = loBall.Owner, life = loBall.Life, movementX = loBall.DirectionX, movementY = loBall.DirectionY, positionX = loBall.PosX, positionY = loBall.PosY, resolutionY = loBall.ResY, resolutionX = loBall.ResX }; //Segun la posicion X de la pelota sabemos si es left o right if (loBall.PosX < this.Width / 2) { //loSocket.connectSocketLeft(ipLeft); loBall.RemoveBall(); loBall.Dispose(); ball.positionX = this.Width - (ball.diameter + 5); datosPelota = JsonConvert.SerializeObject(ball); loSocket.sendDataLeft(datosPelota); } else { //loSocket.connectSocketRight(ipRight); loBall.RemoveBall(); loBall.Dispose(); ball.positionX = 4; datosPelota = JsonConvert.SerializeObject(ball); loSocket.sendDataRight(datosPelota); } } } catch (Exception excp) { } }
private void FrmMain_KeyUp(object sender, KeyEventArgs e) { //Al clicar en la tecla "Ctrl+n" generamos una pelota if (e.KeyCode == Keys.Space) { //Poner la pelota de la Marta loBall = new ClBall(Color.FromArgb(255, random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), ownerName, 10, 10, 50, this, 30, loPaddle, 70, 70, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, 1); loBall.wallhit += LoBall_wallhit; } if (e.KeyCode == Keys.Escape) { // CERRAR SOCKETS loSocket.fullDisconnect(); Close(); } }