示例#1
0
 private void label1_Click(object sender, EventArgs e)
 {
     if (!(Ready && enemyReady))
     {
         if (!Ready)
         {
             label1.ForeColor = Color.Green;
             connection.SendRawData("Ready", RawDataConverter.GetBytes(true));
             Ready = true;
         }
         else
         {
             label1.ForeColor = Color.Red;
             connection.SendRawData("Ready", RawDataConverter.GetBytes(false));
             Ready = false;
         }
     }
 }
示例#2
0
        private void connectionEstablished(Connection con, ConnectionType conType)
        {
            int turn = r.Next(2);

            richTextBox1.Text += $"Connected{con.IPRemoteEndPoint}" + Environment.NewLine;
            if (p1 == null)
            {
                p1       = new Player(con);
                p1.ready = false;
            }
            else
            {
                p2       = new Player(con);
                p2.ready = false;
            }
            con.RegisterRawDataHandler("Image", (RawData, connection) =>
            {
                if (connection == p1.con)
                {
                    p1.pic = ImageConvert.bytes2Image(RawData.Data);
                }
                else
                {
                    p2.pic = ImageConvert.bytes2Image(RawData.Data);
                    p1.con.SendRawData("image", ImageConvert.image2Bytes(p2.pic));
                    p2.con.SendRawData("image", ImageConvert.image2Bytes(p1.pic));
                    if (turn == 1)
                    {
                        p1.FirstTurn = true;
                        p1.con.SendRawData("firstTurn", RawDataConverter.GetBytes(true));
                        p1.turn = true;
                    }
                    else
                    {
                        p2.FirstTurn = true;
                        p2.con.SendRawData("firstTurn", RawDataConverter.GetBytes(true));
                        p2.turn = false;
                    }
                }
            });
            con.RegisterRawDataHandler("Nick", (RawData, connection) =>
            {
                if (connection == p1.con)
                {
                    p1.nick = RawData.ToUTF8String();
                }
                else
                {
                    p2.nick = RawData.ToUTF8String();
                    p1.con.SendRawData("nick", Encoding.UTF8.GetBytes(p2.nick));
                    p2.con.SendRawData("nick", Encoding.UTF8.GetBytes(p1.nick));
                }
            });
            con.RegisterRawDataHandler("Ready", (RawData, connection) =>
            {
                if (connection == p1.con)
                {
                    p1.ready = RawData.ToBoolean();
                    if (p2 != null)
                    {
                        p1.con.SendRawData("ready", RawDataConverter.GetBytes(p2.ready));
                    }
                    p2.con.SendRawData("ready", RawDataConverter.GetBytes(p1.ready));
                }
                else
                {
                    p2.ready = RawData.ToBoolean();
                    p1.con.SendRawData("ready", RawDataConverter.GetBytes(p2.ready));
                    p2.con.SendRawData("ready", RawDataConverter.GetBytes(p1.ready));
                }
            });
            con.RegisterRawDataHandler("mapUpdate", (RawData, connection) =>
            {
                char[] newmap = RawData.ToUTF8String().ToArray();
                for (int i = 0; i < 9; i++)
                {
                    map[i] = int.Parse(newmap[i].ToString());
                }
                string mapString = "";
                for (int i = 0; i < 9; i++)
                {
                    mapString += map[i].ToString();
                }
                if (connection == p1.con)
                {
                    p1.turn = false;
                    p2.turn = true;
                    p1.con.SendRawData("Turn", RawDataConverter.GetBytes(p1.turn));
                    p2.con.SendRawData("Turn", RawDataConverter.GetBytes(p2.turn));
                    p2.con.SendRawData("MapUpdate", Encoding.UTF8.GetBytes(mapString));
                }
                else
                {
                    p2.turn = false;
                    p1.turn = true;
                    p1.con.SendRawData("Turn", RawDataConverter.GetBytes(p1.turn));
                    p2.con.SendRawData("Turn", RawDataConverter.GetBytes(p2.turn));
                    p1.con.SendRawData("MapUpdate", Encoding.UTF8.GetBytes(mapString));
                }
                if (checkGameWin() == 1 && p1.FirstTurn)
                {
                    p1.con.SendRawData("win", RawDataConverter.GetBytes(true));
                    p2.con.SendRawData("lose", RawDataConverter.GetBytes(true));
                    map = new int[]
                    { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                }
                else if (checkGameWin() == 2 && p2.FirstTurn)
                {
                    p1.con.SendRawData("win", RawDataConverter.GetBytes(true));
                    p2.con.SendRawData("lose", RawDataConverter.GetBytes(true));
                    map = new int[]
                    { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                }
                else if (checkGameWin() == 1 && p2.FirstTurn)
                {
                    p2.con.SendRawData("win", RawDataConverter.GetBytes(true));
                    p1.con.SendRawData("lose", RawDataConverter.GetBytes(true));
                    map = new int[]
                    { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                }
                else if (checkGameWin() == 2 && p1.FirstTurn)
                {
                    p2.con.SendRawData("win", RawDataConverter.GetBytes(true));
                    p1.con.SendRawData("lose", RawDataConverter.GetBytes(true));
                    map = new int[]
                    { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                }
            }
                                       );
        }