예제 #1
0
        private void Frm_Chessboard_Shown(object sender, EventArgs e)
        {
            frmClient.Format_ListV(listView_Battle, imageList2);
            frmClient.Data_List(listView_Battle, Publec_Class.UserName, Publec_Class.Fraction.ToString(), Publec_Class.CaputID.ToString());
            label_N.Text       = Publec_Class.UserName;
            label_F.Text       = Publec_Class.Fraction.ToString();
            pictureBox_C.Image = null;
            if (Publec_Class.UserSex == 0)
            {
                pictureBox_C.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
            }
            else
            {
                pictureBox_C.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
            }

            GIP = ClientClass.GameIP.Trim();//IP地址
            if (GIP == "")
            {
                pictureBox2.Enabled = false;
                //label_Genre.Text = GIP;

                pictureBox_Left.Image  = null;
                pictureBox_Right.Image = null;
                if (Publec_Class.UserSex == 0)
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                label_Right.Text = Publec_Class.UserName;

                pictureBox_Q_Right.Image = null;
                pictureBox_Q_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\黑棋.png");

                this.pictureBox2.Image   = null;
                this.pictureBox2.Image   = Image.FromFile(ClientClass.ImaDir + "\\Image\\开始按钮灰.png");
                this.pictureBox2.Enabled = false;
            }
            else
            {
                GetGameInfo(ClientClass.GameIP);
                ClassMsg      temMsg   = new ClassMsg();
                ClassUsers    Users    = new ClassUsers();
                ClassUserInfo UserItem = new ClassUserInfo();//创建并引用ClassUserInfo类

                pictureBox_Left.Image = null;
                if (Publec_Class.UserSex == 0)
                {
                    pictureBox_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                pictureBox_Q_Left.Image = null;
                pictureBox_Q_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\白棋.png");
                label_Left.Text         = Publec_Class.UserName;


                pictureBox_Right.Image = null;
                if (Gem_S == 0)
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                label_Right.Text = Gem_N;

                pictureBox_Q_Right.Image = null;
                pictureBox_Q_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\黑棋.png");

                frmClient.Data_List(listView_Battle, Gem_N, Gem_F.ToString(), Gem_C.ToString());

                temMsg.sendKind   = SendKind.SendCommand;
                temMsg.msgCommand = MsgCommand.GetGameF;
                temMsg.RIP        = GIP;

                //原来是11000
                udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11001, new ClassSerializers().SerializeBinary(temMsg).ToArray());

                this.pictureBox2.Image   = null;
                this.pictureBox2.Enabled = true;
                this.pictureBox2.Image   = Image.FromFile(ClientClass.ImaDir + "\\Image\\开始按钮.png");

                UserItem.UserIP   = Publec_Class.ClientIP;            //记录用户的IP地址
                UserItem.UserPort = Publec_Class.ServerPort;          //记录端口号
                UserItem.UserName = Publec_Class.UserName;            //记录用户名称
                UserItem.Fraction = Publec_Class.Fraction.ToString(); //当前分数
                UserItem.Caput    = Publec_Class.CaputID.ToString();  //头像
                UserItem.Sex      = Publec_Class.UserSex.ToString();  //性别
                Users.add(UserItem);                                  //将单用户信息添加到用户列表中

                pictureBox2.Enabled = true;
                ThreadStart ts = new ThreadStart(this.StartServer);
                mainThread      = new Thread(ts);
                mainThread.Name = "GOB_Chess";
                LineName        = mainThread.Name;
                mainThread.Start();

                temMsg.Data       = new ClassSerializers().SerializeBinary(Users).ToArray();//将用户列表写入到二进制流中
                temMsg.msgCommand = MsgCommand.BeginJoin;
                udpSocket1.Send(IPAddress.Parse(GIP), 11001, new ClassSerializers().SerializeBinary(temMsg).ToArray());
                StartListen = true;
                ConnHandle  = 1;
            }
            panel_Check.Click += new EventHandler(asd);
            CanDown            = false;

            for (int i = 0; i < 15; i++)
            {
                for (int j = 0; j < 15; j++)
                {
                    note[i, j] = -1;
                }
            }
        }
예제 #2
0
        private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) //当有数据到达后的处理进程
        {
            try
            {
                ClassMsg msg = new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as ClassMsg;
                switch (msg.msgCommand)
                {
                case MsgCommand.UserList:    //进入大厅获取在线用户列表
                {
                    frmClient.Format_ListV(listView_user, imageList2);
                    GetUserList(Data, Ip, Port);
                    break;
                }

                case MsgCommand.Close:    //退出大厅
                {
                    udpSocket1.Active = false;
                    this.Close();
                    break;
                }

                case MsgCommand.ComeToHallH:
                {
                    frmClient.Data_List(listView_user, msg.UserName, msg.Fraction.ToString(), msg.CPhoto.ToString());
                    break;
                }

                case MsgCommand.ExitToHall:
                {
                    frmClient.ReMove_List(listView_user, msg.UserName);
                    break;
                }

                case MsgCommand.BeginToGameL:
                {
                    Frm_Chessboard FrmChessboard = new Frm_Chessboard();



                    if (FrmChessboard.ShowDialog() == DialogResult.OK)
                    {
                        //frmClient.Format_ListV(listView_user, imageList2);

                        ClassMsg msg1 = new ClassMsg();
                        msg1.AreaMark   = Publec_Class.TAreaM.ToString();
                        msg1.RoomMark   = Publec_Class.TRoomM.ToString();
                        msg1.RIP        = PubClass.MyHostIP();
                        msg1.RPort      = Publec_Class.ServerPort;
                        msg1.SIP        = Publec_Class.ServerIP;
                        msg1.SPort      = "11000";
                        msg1.sendKind   = SendKind.SendCommand;
                        msg1.msgCommand = MsgCommand.ComeToHall;
                        msg1.CPhoto     = Publec_Class.CaputID;
                        //发送消息
                        udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(msg1).ToArray());

                        msg.sendKind   = SendKind.SendCommand;
                        msg.msgCommand = MsgCommand.EndToGame;
                        udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
                    }
                    break;
                }

                case MsgCommand.ExitToArea:
                {
                    if (Convert.ToInt32(msg.AreaMark) == Publec_Class.TAreaM && Convert.ToInt32(msg.RoomMark) == Publec_Class.TRoomM)
                    {
                        frmClient.ReMove_List(listView_user, msg.UserName);
                    }
                    break;
                }

                case MsgCommand.BeginToGameH:
                {
                    frmClient.AddDeskMsg(flowPanel_Oppose, msg, imageList1, Ip.ToString(), msg.msgCommand);
                    break;
                }

                case MsgCommand.EndToGameH:
                {
                    frmClient.AddDeskMsg(flowPanel_Oppose, msg, imageList1, Ip.ToString(), msg.msgCommand);
                    PressGame = false;
                    break;
                }

                case MsgCommand.EndRival:
                {
                    frmClient.Game_TerraInfo(Data);
                    break;
                }

                case MsgCommand.ComeToSay:
                {
                    frmClient.AddMsgText(RTB_Dialog, msg, msg.msgCommand);
                    break;
                }
                }
            }
            catch { }
        }
예제 #3
0
        private void Frm_Chessboard_Shown(object sender, EventArgs e)
        {
            frmClient.Format_ListV(listView_Battle, imageList2);    //对用户列表进行初始化
                                                                    //将当前用户的信息添加到用户列表中
            frmClient.Data_List(listView_Battle, Publec_Class.UserName, Publec_Class.Fraction.ToString(), Publec_Class.CaputID.ToString());
            label_N.Text       = Publec_Class.UserName;             //显示当前用户的名称
            label_F.Text       = Publec_Class.Fraction.ToString();  //显示当前用户的分数
            pictureBox_C.Image = null;                              //清空当前用户的头像
            if (Publec_Class.UserSex == 0)                          //如果当前用户是男性
            {
                pictureBox_C.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
            }
            else
            {
                pictureBox_C.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
            }
            GIP = ClientClass.GameIP.Trim();                    //获取对方玩家的相关信息
            if (GIP == "")                                      //如果为空,表示只有自已进入该桌
            {
                pboxStart.Enabled      = false;                 //使“开始”按钮不可用
                pictureBox_Left.Image  = null;                  //清空对决双方的头像图片
                pictureBox_Right.Image = null;
                if (Publec_Class.UserSex == 0)                  //如果当前用户是男性
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                label_Right.Text         = Publec_Class.UserName; //显示当前用户的名称
                pictureBox_Q_Right.Image = null;                  //清空显示棋子类型的图片
                                                                  //显示当前用户为黑棋
                pictureBox_Q_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\黑棋.png");
                pboxStart.Image          = null;                  //清空“开始”按钮
                //使“开始”按钮为灰度显示
                pboxStart.Image   = Image.FromFile(ClientClass.ImaDir + "\\Image\\开始按钮灰.png");
                pboxStart.Enabled = false;                      //使“开始”按钮不可用
            }
            else
            {
                GetGameInfo(ClientClass.GameIP);                    //获取对方玩家的相关信息
                ClassMsg      temMsg   = new ClassMsg();
                ClassUsers    Users    = new ClassUsers();
                ClassUserInfo UserItem = new ClassUserInfo();       //创建并引用ClassUserInfo类
                pictureBox_Left.Image = null;                       //清空当前用户的头像
                if (Publec_Class.UserSex == 0)                      //如果当前用户是男性
                {
                    pictureBox_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                pictureBox_Q_Left.Image = null;                  //清空当前用户的棋子类型
                                                                 //显示当前用户的棋子类型为白棋
                pictureBox_Q_Left.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\白棋.png");
                label_Left.Text         = Publec_Class.UserName; //显示当前用户的名称
                pictureBox_Right.Image  = null;                  //清空对方玩家的头像
                if (Gem_S == 0)                                  //如果对方玩家是男性
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\男人.png");
                }
                else
                {
                    pictureBox_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\女人.png");
                }
                label_Right.Text         = Gem_N;                   //显示对方玩家的名称
                pictureBox_Q_Right.Image = null;                    //清空对方玩家的棋子类型
                pictureBox_Q_Right.Image = Image.FromFile(ClientClass.ImaDir + "\\Image\\黑棋.png");
                //将对方玩家的信息显示在用户列表中
                frmClient.Data_List(listView_Battle, Gem_N, Gem_F.ToString(), Gem_C.ToString());
                temMsg.sendKind   = SendKind.SendCommand;
                temMsg.msgCommand = MsgCommand.GetGameF;
                temMsg.RIP        = GIP;

                //原来是11000
                udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11001, new ClassSerializers().SerializeBinary(temMsg).ToArray());
                pboxStart.Image   = null;                             //清空“开始”按钮
                pboxStart.Enabled = true;                             //使“开始”按钮可用
                                                                      //加载“开始”按钮的可用图片
                pboxStart.Image   = Image.FromFile(ClientClass.ImaDir + "\\Image\\开始按钮.png");
                UserItem.UserIP   = Publec_Class.ClientIP;            //记录用户的IP地址
                UserItem.UserPort = Publec_Class.ServerPort;          //记录端口号
                UserItem.UserName = Publec_Class.UserName;            //记录用户名称
                UserItem.Fraction = Publec_Class.Fraction.ToString(); //当前分数
                UserItem.Caput    = Publec_Class.CaputID.ToString();  //头像
                UserItem.Sex      = Publec_Class.UserSex.ToString();  //性别
                Users.add(UserItem);                                  //将单用户信息添加到用户列表中
                pboxStart.Enabled = true;
                ThreadStart ts = new ThreadStart(this.StartServer);   //开启服务
                mainThread      = new Thread(ts);
                mainThread.Name = "GOB_Chess";
                LineName        = mainThread.Name;
                mainThread.Start();                             //连接服务
                                                                //将用户列表写入二进制流中
                temMsg.Data       = new ClassSerializers().SerializeBinary(Users).ToArray();
                temMsg.msgCommand = MsgCommand.BeginJoin;       //设置发送的消息命令
                                                                //将当前用户的信息发送给对方玩家
                udpSocket1.Send(IPAddress.Parse(GIP), 11001, new ClassSerializers().SerializeBinary(temMsg).ToArray());
                StartListen = true;
                ConnHandle  = 1;
            }
            panel_Check.Click += new EventHandler(asd);         //加载棋盘的单击事件
            CanDown            = false;
            for (int i = 0; i < 15; i++)                        //对棋子的记录位置进行初始化
            {
                for (int j = 0; j < 15; j++)
                {
                    note[i, j] = -1;
                }
            }
        }