Beispiel #1
0
 public SceneClient()
     : base()
 {
     _TFinDeTour = new Thread(TFinDeTour);
     _TReceiveFile = new Thread(TReceiveFile);
     etape = EtapeReseau.etape1_initialisation;
     fileState = FileReseau.sleep;
     receive = "";
 }
Beispiel #2
0
 public SceneServer()
     : base()
 {
     boutons.Add(new BoutonLien(Divers.X / 2 - 200, 700, new Rectangle(0, 0, 800, 300), null, 5));
     fileState = FileReseau.sleep;
     _TFinDeTour = new Thread(TFinDeTour);
     _TReceiveFile = new Thread(TReceiveFile);
     etape = EtapeReseau.etape1_initialisation;
     receive = "";
     client = null;
 }
Beispiel #3
0
 private void TReceiveFile()
 {
     while (true)
     {
         int i;
         if ((i = Netools.Read(client)) == 57) // 9
         {
              fileState = FileReseau.reception_en_cours;
         }
     }
 }
Beispiel #4
0
        public override void UpdateScene(GameTime gameTime)
        {
            switch (etape)
            {
                case EtapeReseau.etape1_initialisation:
                    sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    etape = EtapeReseau.etape2_connection;
                    break;
                case EtapeReseau.etape2_connection:
                    Ecoute();
                    etape = EtapeReseau.etape3_synchronisation;
                    break;
                case EtapeReseau.etape3_synchronisation:
                    if (!een3)
                    {
                        InitialiserPartie();
                        een3 = true;
                    }
                    int i;
                    if ((i = Netools.Read(client)) == 72)// h
                    {
                        int j;
                        if ((j = Netools.Read(client)) == 105)// i
                        {
                            Console.SetCursorPosition(0, 2);
                            Console.WriteLine((char)i + " " + (char)j);
                            etape = EtapeReseau.etape4_partie;
                        }
                    }
                    _TFinDeTour.Start();
                    _TReceiveFile.Start();
                    break;
                case EtapeReseau.etape4_partie:
                    if (fileState == FileReseau.reception_en_cours)
                    {
                        Console.WriteLine("reception_avant");
                        Netools.ReadText(client, (byte)'$', receive);
                        Console.WriteLine("reception_apres : " + receive);
                        try
                        {
                            Console.WriteLine("deserializer_avant");
                            StreamWriter writer = new StreamWriter(new FileStream("G", FileMode.Create, FileAccess.ReadWrite));
                            writer.Write(receive);
                            partie.gameplay = (SystemeDeJeu)Divers.deserializer("G");
                            Netools.ClearPresence(partie.earthPenguin);
                            Console.WriteLine("deserializer_apres");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }

                        fileState = FileReseau.sleep;
                        Console.WriteLine("filereseau_to_sleep");
                    }
                    else if (fileState == FileReseau.envoie_en_cours)
                    {
                        try
                        {
                            Console.WriteLine("serializer_");
                            Divers.serializer(partie.gameplay, "G.bin");
                            Console.WriteLine("send_serializer");
                            Thread.Sleep(5000);
                            Netools.SendText(client, "G.bin");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                        Console.WriteLine("filereseau_to_sleep");
                        fileState = FileReseau.sleep;
                    }
                    else
                    {
                        if (partie.gameplay.tourencours == 0)
                        {
                            partie.UpdateReseauServer(gameTime, this);
                        }
                        else
                        {
                            Netools.UpdateTransition(gameTime);
                        }
                    }
                    break;
                case EtapeReseau.etap5_fin_de_partie:
                    break;
                default:
                    break;
            }
        }
Beispiel #5
0
        public void TFinDeTour()
        {
            while (true)
            {
                int f;
                if ((f = Netools.Read(client)) == 93) // ']'
                {

                    fileState = FileReseau.reception_en_cours;
                    priorite = true;
                    ChangementTour();
                    partie.time = 0;
                }
            }
        }
Beispiel #6
0
        public override void UpdateScene(GameTime gameTime)
        {
            Console.SetCursorPosition(0, 0);
            Console.Write(etape);
            Console.SetCursorPosition(0, 1);

            switch (etape)
            {
                case EtapeReseau.etape1_initialisation:
                    sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    etape = EtapeReseau.etape2_connection;
                    break;
                case EtapeReseau.etape2_connection:
                    #region Connection
                    while (tentative > 0)
                    {
                        try
                        {
                            sock.Connect(new IPEndPoint(IPAddress.Parse(Netools.writebox.text), 4242));
                            break;
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                        tentative--;
                        Thread.Sleep(250);
                    }

                    if (sock.Connected)
                    {
                        etape = EtapeReseau.etape3_synchronisation;
                    }
                    else
                    {
                        Engine.scenes.Pop();
                    }
                    #endregion
                    break;
                case EtapeReseau.etape3_synchronisation:
                    if (!een3)
                    {
                        InitialiserPartie();
                        partie.gameplay.tourencours = 0;
                        een3 = true;
                    }
                    Netools.Send(sock, "H"); // H -> en binaire sheet: 72
                    Netools.Send(sock, "i"); // i -> en binaire sheet: 105

                    etape = EtapeReseau.etape4_partie;
                    _TFinDeTour.Start();
                    break;
                case EtapeReseau.etape4_partie:
                    if (fileState == FileReseau.reception_en_cours)
                    {
                        Console.WriteLine("reception_avant");
                        Netools.ReadText(sock, (byte)'$', receive);
                        Console.WriteLine("reception_apres : " + receive);
                        try
                        {
                            Console.WriteLine("deserializer_avant");
                            StreamWriter writer = new StreamWriter(new FileStream("G.bin", FileMode.Create, FileAccess.ReadWrite));
                            partie.gameplay = (SystemeDeJeu)Divers.deserializer("G");
                            Netools.ClearPresence(partie.earthPenguin);
                            Console.WriteLine("deserializer_apres");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }

                        fileState = FileReseau.sleep;
                        Console.WriteLine("filereseau_to_sleep");
                    }
                    else if (fileState == FileReseau.envoie_en_cours)
                    {
                        try
                        {
                            Console.WriteLine("serializer_");
                            Divers.serializer(partie.gameplay, "G");
                            Console.WriteLine("send_serializer");
                            Thread.Sleep(5000);
                            Netools.SendText(sock, "G");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                        Console.WriteLine("filereseau_to_sleep");
                        fileState = FileReseau.sleep;
                    }
                    else
                    {
                        if (partie.gameplay.tourencours == 1) // Si c'est a mon tour
                        {
                            partie.UpdateReseauClient(gameTime, this);
                        }
                        else
                        {
                            Netools.UpdateTransition(gameTime);
                        }
                    }
                    break;
                case EtapeReseau.etap5_fin_de_partie:
                    break;
                default:
                    break;
            }
        }
Beispiel #7
0
 private void TFinDeTour()
 {
     while (true)
     {
         int f;
         if ((f = Netools.Read(sock)) == 93)
         {
             fileState = FileReseau.reception_en_cours;
             ChangementTour();
             partie.time = 0;
         }
     }
 }