Tik Tak Toe Game USE Thread

 

Tik Tak Toe Game

Server Side Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Runtime.Serialization.Formatters.Binary;

using System.Net.Sockets;

 

namespace UmarLab11

{

    class server

    {

      

       

    }

    class Program

    {

        static TcpClient p1, p2;

        static void Main(string[] args)

        {

            Console.WriteLine("Server Start by M.Muzamil Hafeez");

            TcpListener server = new TcpListener(9234);

            server.Start();

            for(int i = 1; i <=2; i++)

            {

                TcpClient c = server.AcceptTcpClient();

                if (i == 1)

                    p1 = c;

                else

                    p2 = c;

 

                Console.WriteLine("connect player "+i);

            }

            BinaryFormatter Fobj = new BinaryFormatter();

            Fobj.Serialize(p1.GetStream(), "1");

            Fobj.Serialize(p2.GetStream(), "0");

            String pmsg;

            while (true)

            {

                pmsg = (String)Fobj.Deserialize(p1.GetStream());

                Fobj.Serialize(p2.GetStream(),pmsg);

                pmsg = (String)Fobj.Deserialize(p2.GetStream());

                Fobj.Serialize(p1.GetStream(), pmsg);

 

                Console.WriteLine("player click " + pmsg);

            }

        }

    }

 

}

 

 

 


 

Client Side Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Runtime.Serialization.Formatters.Binary;

using System.Net.Sockets;

 

namespace playGame

{

    class Program

    {

        static TcpClient p1, p2;

        static void Main(string[] args)

        {

            TcpListener server = new TcpListener(9234);

            server.Start();

     Console.WriteLine("Server Start by M.Muzamil Hafeez");

            for(int i = 1; i <=2; i++)

            {

                TcpClient c = server.AcceptTcpClient();

                if (i == 1)

                    p1 = c;

                else

                    p2 = c;

 

                Console.WriteLine("connect player "+i);

            }

            BinaryFormatter Fobj = new BinaryFormatter();

            Fobj.Serialize(p1.GetStream(), "1");

            Fobj.Serialize(p2.GetStream(), "0");

            String pmsg;

            while (true)

            {

                pmsg = (String)Fobj.Deserialize(p1.GetStream());

                Fobj.Serialize(p2.GetStream(),pmsg);

                pmsg = (String)Fobj.Deserialize(p2.GetStream());

                Fobj.Serialize(p1.GetStream(), pmsg);

 

                Console.WriteLine("player click " + pmsg);

            }s

        }

    }

 

}


Tik Tak Game  Side Code

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

using System.Runtime.Serialization.Formatters.Binary;

using System.Threading;

 

namespace client

{

    public partial class grid : Form

    {

        TcpClient c;

        string symbol, opponent;

        public grid(TcpClient c,string s)

        {

            this.c = c;

            symbol = s;

            InitializeComponent();

        }

        private void disablecontrol()

        {

            b00.Enabled = false;

            b01.Enabled = false;

            b02.Enabled = false;

 

            b10.Enabled = false;

            b11.Enabled = false;

            b12.Enabled = false;

 

            b20.Enabled = false;

            b21.Enabled = false;

            b22.Enabled = false;

        }

        private void enablecontrol()

        {

            if (b00.Text == string.Empty)

            {

                b00.Enabled = true;

            }

            if (b01.Text == string.Empty)

            {

                b01.Enabled = true;

            }

            if (b02.Text == string.Empty)

            {

                b02.Enabled = true;

            }

            if (b10.Text == string.Empty)

            {

                b10.Enabled = true;

            }

            if (b11.Text == string.Empty)

            {

                b11.Enabled = true;

            }

            if (b12.Text == string.Empty)

            {

                b12.Enabled = true;

            }

 

            if (b20.Text == string.Empty)

            {

                b20.Enabled = true;

            }

            if (b21.Text == string.Empty)

            {

                b21.Enabled = true;

            }

            if (b22.Text == string.Empty)

            {

               b22.Enabled = true;

            }

        }

 

        private void grid_Load(object sender, EventArgs e)

        {

            labelplay.Text = symbol;

            if (symbol == "0")

            {

                opponent = "1";

                disablecontrol();

                new Thread(() => Read()).Start();

            }

            else

            {

                opponent = "0";

            }

            CheckForIllegalCrossThreadCalls = false;

        }

        private void Read()

        {

          

            BinaryFormatter fobj = new BinaryFormatter();

            string msg = (string)fobj.Deserialize(c.GetStream());

            Mark(msg);

            enablecontrol();

        }

        private void ClickButton(Button b ,String s)

        {

            b.Enabled = false;

            b.Text = symbol;

            isWinner();

            disablecontrol();

            BinaryFormatter Fobj = new BinaryFormatter();

            Fobj.Serialize(c.GetStream(), s);

            Read();

        }

        private void b00_Click(object sender, EventArgs e)

        {

            ClickButton(b00,"0,0");

        }

        private void b01_Click(object sender, EventArgs e)

        {

            ClickButton(b01,"0,1");

        }

        private void b02_Click(object sender, EventArgs e)

        {

            ClickButton(b02,"0,2");

        }

        private void b10_Click(object sender, EventArgs e)

        {

            ClickButton(b10,"1,0");

        }

        private void b11_Click(object sender, EventArgs e)

        {

            ClickButton(b11,"1,1");

        }

        private void b12_Click(object sender, EventArgs e)

        {

            ClickButton(b12,"1,2");

        }

 

        private void b20_Click(object sender, EventArgs e)

        {

            ClickButton(b20,"2,0");

        }

 

        private void b21_Click(object sender, EventArgs e)

        {

            ClickButton(b21,"2,1");

        }

 

        private void b22_Click(object sender, EventArgs e)

        {

            ClickButton(b22,"2,2");

        }

 

        private void Mark(String msg)

        {

            string[] m = msg.Split(',');

            labelplay.Text = "Player " + symbol + " click " + msg;

            int r = int.Parse(m[0]);

            int c = int.Parse(m[1]);

            if (r == 0 && c == 0 && m.Length==2)

            {

                b00.Enabled = false;

                b00.Text = opponent;

            }

            else if (r == 0 && c == 1)

            {

                b01.Enabled = false;

                b01.Text = opponent;

            }

            else if (r == 0 && c == 2)

            {

                b02.Enabled = false;

                b02.Text = opponent;

            }

            else if (r == 1 && c == 0)

            {

                b10.Enabled = false;

                b10.Text = opponent;

            }

            else if (r == 1 && c == 1)

            {

                b11.Enabled = false;

                b11.Text = opponent; 

            }

            else if (r == 1 && c == 2)

            {

                b12.Enabled = false;

                b12.Text = opponent;

            }

            else if (r == 2 && c == 0)

            {

                b20.Enabled = false;

                b20.Text = opponent;

            }

            else if (r == 2 && c == 1)

            {

                b21.Enabled = false;

                b21.Text = opponent;

            }

            else if (r == 2 && c == 2)

            {

                b22.Enabled = false;

                b22.Text = opponent;

            }

        }

        private void isWinner()

        {

            bool iswinner = false;

            if (b00.Text == b01.Text && b00.Text == b02.Text && b00.Enabled == false && b01.Enabled == false && b02.Enabled == false)

            {

                iswinner = true;

            }

            else if (b10.Text == b11.Text && b10.Text == b12.Text && b10.Enabled == false && b11.Enabled == false && b12.Enabled == false)

            {

                iswinner = true;

            }

            else if (b20.Text == b21.Text && b20.Text == b22.Text && b20.Enabled == false && b21.Enabled == false && b22.Enabled == false)

            {

                iswinner = true;

            }

            else if (b00.Text == b11.Text && b00.Text == b22.Text && b00.Enabled == false && b11.Enabled == false && b22.Enabled == false)

            {

                iswinner = true;

            }

            else if (b02.Text == b11.Text && b02.Text == b20.Text && b02.Enabled == false && b11.Enabled == false && b02.Enabled == false)

            {

                iswinner = true;

            }

            else if (b00.Text == b10.Text && b00.Text == b20.Text && b00.Enabled == false && b10.Enabled == false && b20.Enabled == false)

            {

                iswinner = true;

            }

            else if (b01.Text == b11.Text && b01.Text == b21.Text && b01.Enabled == false && b11.Enabled == false && b21.Enabled == false)

            {

                iswinner = true;

            }

            else if (b02.Text == b12.Text && b02.Text == b22.Text && b02.Enabled == false && b12.Enabled == false && b22.Enabled == false)

            {

                iswinner = true;

            }

            else if (b00.Enabled == false && b01.Enabled == false && b02.Enabled == false && b10.Enabled == false && b11.Enabled == false && b12.Enabled == false && b20.Enabled == false && b21.Enabled == false && b22.Enabled == false)

            {

                MessageBox.Show("Game Draw");

                Reset();

            }

            if (iswinner == true)

            {

                if (symbol == "0")

                {

                    MessageBox.Show("Winner player 0 ");

                    iswinner = false;

                    Reset();

                    resetGame = true;

                }

                else

                {

                    MessageBox.Show("Winner player 1");

                    iswinner = false;

                    Reset();

                    resetGame = true;

                }

            }

        }

       static bool resetGame = false;

 

        private void btnexit_Click(object sender, EventArgs e)

        {

            Application.Exit();

        }

 

        private void Reset()

        {

            b00.Invoke((MethodInvoker)(() => b00.Enabled = true));

            b01.Invoke((MethodInvoker)(() => b01.Enabled = true));

            b02.Invoke((MethodInvoker)(() => b02.Enabled = true));

            b10.Invoke((MethodInvoker)(() => b10.Enabled = true));

            b11.Invoke((MethodInvoker)(() => b11.Enabled = true));

            b12.Invoke((MethodInvoker)(() => b12.Enabled = true));

            b20.Invoke((MethodInvoker)(() => b20.Enabled = true));

            b21.Invoke((MethodInvoker)(() => b21.Enabled = true));

            b22.Invoke((MethodInvoker)(() => b22.Enabled = true));

 

            b00.Invoke((MethodInvoker)(() => b00.Text = ""));

            b01.Invoke((MethodInvoker)(() => b01.Text = ""));

            b02.Invoke((MethodInvoker)(() => b02.Text = ""));

            b10.Invoke((MethodInvoker)(() => b10.Text = ""));

            b11.Invoke((MethodInvoker)(() => b11.Text = ""));

            b12.Invoke((MethodInvoker)(() => b12.Text = ""));

            b20.Invoke((MethodInvoker)(() => b20.Text = ""));

            b21.Invoke((MethodInvoker)(() => b21.Text = ""));

            b22.Invoke((MethodInvoker)(() => b22.Text = ""));

        }




    }

}













Comments