// Specify what you want to happen when the Elapsed event is raised.
        private void OnTimedEvent(object source, ElapsedEventArgs eventArgs)
        {
            aTimer.Enabled = false;

            myClient.Routine();
            myTron.Deplacement();


            if (myTron.IsDead() && stillAlive)
            {
                stillAlive = false;

                // Désactivation clavier
                this.KeyDown -= keh;
                //MessageBox.Show(null, "You LOSE!!!", "Conclusion",
                //     MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                e.DrawString("You LOSE!!!", new Font(FontFamily.GenericSansSerif, 20.00f),
                             new SolidBrush(Color.Red), new PointF(myTron.getTaille() * tailleJoueur / 2 - 80, myTron.getTaille() * tailleJoueur / 2 - 10));
            }
            if (myTron.IsFinished())
            {
                myClient.Conclusion();

                if (myTron.IsWinner())
                {
                    //MessageBox.Show(null, "You WIN!!!", "Conclusion",
                    //     MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    e.DrawString("You WIN!!!", new Font(FontFamily.GenericSansSerif, 20.00f),
                                 new SolidBrush(Color.Blue), new PointF(myTron.getTaille() * tailleJoueur / 2 - 80, myTron.getTaille() * tailleJoueur / 2 - 10));
                }
            }
            else
            {
                aTimer.Enabled = true;
            }

            Rendu();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            ServeurUdp.ServeurUdp.StartChat();

            Tron.Tron myTron;      // Moteur du jeu

            byte nJoueurs  = 2;    // Nombre de joueurs
            byte frequence = 1;    // Temps du tour de jeu (en dixieme de s)
            byte taille    = 60;   // Taille du terrain

            // ************************************* Intitialisation partie
            System.Console.WriteLine("Initialisation");

            // TODO Creation de la socket d'écoute TCP
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // TODO Bind et listen
            serverSocket.Bind(new IPEndPoint(IPAddress.Any, 23232));
            serverSocket.Listen(nJoueurs);
            while (1 == 1)
            {
                // TODO Creation du tableau des sockets connectées
                List <Socket> clients = new List <Socket>();

                // Creation du moteur de jeu
                myTron = new Tron.Tron(nJoueurs, taille);

                // TODO Acceptation des clients
                for (int i = 0; i < nJoueurs; i++)
                {
                    clients.Add(serverSocket.Accept());
                    Console.WriteLine("Connexion de " + clients[i].RemoteEndPoint);
                }

                // TODO Envoie des paramètres

                byte[] parametres = new byte[4];
                parametres[1] = nJoueurs;
                parametres[2] = frequence;
                parametres[3] = taille;

                for (int i = 0; i < nJoueurs; i++)
                {
                    parametres[0] = (byte)i;
                    clients[i].Send(parametres, parametres.Length, SocketFlags.None);
                }

                // ************************************* Routine à chaque tour
                System.Console.WriteLine("Routine");

                // Tant que la partie n'est pas finie
                while (!myTron.IsFinished())
                {
                    // TODO Réception de la direction de chaque joueur
                    byte[] directions = new byte[clients.Count];
                    byte[] receive    = new byte[1];
                    for (int i = 0; i < clients.Count; i++)
                    {
                        try
                        {
                            if (clients[i].Connected)
                            {
                                clients[i].Receive(receive, receive.Length, SocketFlags.None);
                                directions[i] = receive[0];
                            }
                            else
                            {
                                clients[i].Close();
                                // Perdu
                                directions[i] = 5;
                            }
                        }
                        catch (Exception e)
                        {
                            clients[i].Close();
                            // Perdu
                            directions[i] = 5;
                        }
                    }
                    // TODO Calcul collision : myTron.Collision(byte[] <toutes les directions>);

                    myTron.Collision(directions);

                    // TODO Envoie des directions de tous les joueurs à tous les clients

                    foreach (Socket s in clients)
                    {
                        try
                        {
                            if (s.Connected)
                            {
                                s.Send(directions, directions.Length, SocketFlags.None);
                            }
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }


                // ************************************* Conclusion
                System.Console.WriteLine("Conclusion");

                // TODO Fermeture des sockets connectées

                foreach (Socket s in clients)
                {
                    if (s.Connected)
                    {
                        s.Close();
                    }
                }
            }
            // TODO Fermeture socket d'écoute
            serverSocket.Close();
            ServeurUdp.ServeurUdp.thread.Abort();
        }