예제 #1
0
        /// <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;
            }
        }
예제 #2
0
 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);
         }
     }
 }