/// <summary> /// udp数据包解析函数 /// </summary> /// <param name="buf">字节数组</param> private void Parse(byte[] buf) { MsgType msgType = MsgType.None; Msg msg = null; string str = Encoding.UTF32.GetString(buf); string[] strs = str.Split('|'); msgType = (MsgType)Convert.ToInt32(strs[0]); //通过不同的消息类型,对消息进行解析 switch (msgType) { case MsgType.TankNew: msg = new TankNewMsg(ctrl); msg.Parse(buf); break; case MsgType.TankMove: msg = new TankMoveMsg(ctrl); msg.Parse(buf); break; case MsgType.BulletNew: msg = new BulletNewMsg(ctrl); msg.Parse(buf); break; } }
public void KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.A || e.KeyCode == (Keys)((char)Keys.A + 32)) { dirLeft = false; } if (e.KeyCode == Keys.D || e.KeyCode == (Keys)((char)Keys.D + 32)) { dirRight = false; } if (e.KeyCode == Keys.W || e.KeyCode == (Keys)((char)Keys.W + 32)) { dirUp = false; } if (e.KeyCode == Keys.S || e.KeyCode == (Keys)((char)Keys.S + 32)) { dirDown = false; } //发射子弹 if (e.KeyCode == Keys.Space && nc != null) { if (myTank.Life > 0) { Bullet b = myTank.Fire(); bullets.Add(b); //发射子弹时发包 BulletNewMsg msg = new BulletNewMsg(b); nc.Send(msg); } } }