Ejemplo n.º 1
0
        // Reçoit le message d'ordre de passage
        private void RecevoirOrdre()
        {
            string reponse;

            byte[] buffer      = new byte[socket.SendBufferSize];
            int    byteLecture = socket.Receive(buffer);

            byte[] byteFormatter = new byte[byteLecture];

            for (int i = 0; i < byteLecture; ++i)
            {
                byteFormatter[i] = buffer[i];
            }

            reponse = Encoding.ASCII.GetString(byteFormatter);
            string[] tabreponse = reponse.Split(' ');
            if (tabreponse[0] == "1")
            {
                if (LB_Demarrer.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                {
                    Action act = () => LB_Demarrer.Text = ("Vous êtes premier et votre adversaire est: " + tabreponse[1].ToString());
                    LB_Demarrer.Invoke(act);
                    Action act2 = () => BTN_Attaquer.Enabled = true;
                    BTN_Attaquer.Invoke(act2);
                }
                else
                {
                    LB_Demarrer.Text     = ("Vous êtes premier et votre adversaire est: " + tabreponse[1].ToString());
                    BTN_Attaquer.Enabled = true;
                }
                _monTour = true;
            }
            else if (tabreponse[0] == "2")
            {
                if (LB_Demarrer.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                {
                    Action act = () => LB_Demarrer.Text = ("Vous êtes deuxième et votre adversaire est: " + tabreponse[1].ToString());
                    LB_Demarrer.Invoke(act);
                    Action act2 = () => BTN_Attaquer.Enabled = false;
                    BTN_Attaquer.Invoke(act2);
                    _monTour = false;
                }
                else
                {
                    LB_Demarrer.Text     = ("Vous êtes deuxième et votre adversaire est: " + tabreponse[1].ToString());
                    BTN_Attaquer.Enabled = false;
                    _monTour             = false;
                }
            }
            else
            {
                if (LB_Demarrer.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                {
                    Action act = () => LB_Demarrer.Text = (tabreponse[0].ToString());
                    LB_Demarrer.Invoke(act);
                    Action act1 = () => LB_Demarrer.ForeColor = Color.Red;
                    LB_Demarrer.Invoke(act1);
                    Action act2 = () => BTN_Attaquer.Enabled = false;
                    BTN_Attaquer.Invoke(act2);
                    _monTour = false;
                }
                else
                {
                    LB_Demarrer.Text      = (tabreponse[0].ToString());
                    LB_Demarrer.ForeColor = Color.Red;
                    BTN_Attaquer.Enabled  = false;
                    _monTour = false;
                }
            }
            if (BTN_Demarrer.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
            {
                Action act3 = () => BTN_Demarrer.Enabled = true;
                BTN_Demarrer.Invoke(act3);
            }
            else
            {
                BTN_Demarrer.Enabled = true;
            }
        }
Ejemplo n.º 2
0
        //Reçoit le résultat de son coup
        private void RecevoirReponse()
        {
            DataGridViewCellStyle toucheStyle = new DataGridViewCellStyle();

            toucheStyle.BackColor = Color.Red;
            toucheStyle.ForeColor = Color.Red;
            DataGridViewCellStyle manqueStyle = new DataGridViewCellStyle();

            manqueStyle.BackColor = Color.Blue;
            manqueStyle.ForeColor = Color.Blue;
            DialogResult dialogResult;
            string       reponse;

            byte[] buffer      = new byte[socket.SendBufferSize];
            int    byteLecture = socket.Receive(buffer);

            byte[] byteFormatter = new byte[byteLecture];

            for (int i = 0; i < byteLecture; ++i)
            {
                byteFormatter[i] = buffer[i];
            }

            reponse = Encoding.ASCII.GetString(byteFormatter);

            string[] tabreponse = reponse.Split(' ');

            //Si le coup touche un bateau
            if (tabreponse[0] == "True")
            {
                if (_monTour)
                {
                    if (LB_MsgAttaque.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                    {
                        Action act1 = () => LB_MsgAttaque.Text = "Touché!";
                        LB_MsgAttaque.Invoke(act1);
                        Action act2 = () => LB_MsgAttaque.ForeColor = Color.Green;
                        LB_MsgAttaque.Invoke(act2);
                        Action act3 = () => DGV_Attaque.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = toucheStyle;
                        DGV_Attaque.Invoke(act3);
                    }
                    else
                    {
                        LB_MsgAttaque.Text      = "Touché!";
                        LB_MsgAttaque.ForeColor = Color.Green;
                        DGV_Attaque.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = toucheStyle;
                    }
                }
                else
                {
                    if (LB_MsgAttaque.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                    {
                        Action act1 = () => LB_MsgAttaque.Text = "Touché!";
                        LB_MsgAttaque.Invoke(act1);
                        Action act2 = () => LB_MsgAttaque.ForeColor = Color.Red;
                        LB_MsgAttaque.Invoke(act2);
                        Action act3 = () => DGV_Perso.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = toucheStyle;
                        DGV_Perso.Invoke(act3);
                    }
                    else
                    {
                        LB_MsgAttaque.Text      = "Touché!";
                        LB_MsgAttaque.ForeColor = Color.Red;
                        DGV_Perso.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = toucheStyle;
                    }
                }
                if (tabreponse.Length > 3)            //si tabreponse[3] existe, il contient le bateau coulé
                {
                    if (LB_MsgAttaque.InvokeRequired) //pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                    {
                        Action act1 = () => LB_MsgAttaque.Text = tabreponse[3] + " coulé!";
                        LB_MsgAttaque.Invoke(act1);
                    }
                    else
                    {
                        LB_MsgAttaque.Text = tabreponse[3] + " coulé!";
                    }
                    if (tabreponse.Length > 4)//si tabreponse[4] existe, quelqu'un à gagné, le match est fini
                    {
                        if (tabreponse[4] == "1")
                        {
                            dialogResult = MessageBox.Show("Vous avez gagné \n Play Again ?", "Fini", MessageBoxButtons.YesNo);
                        }
                        else
                        {
                            dialogResult = MessageBox.Show("Vous avez perdu \n Play Again ?", "Fini", MessageBoxButtons.YesNo);
                        }
                        if (dialogResult == DialogResult.Yes)
                        {
                            envoyerMessageNouvellePartie("NouvellePartie");
                            System.Diagnostics.Process.Start(Application.ExecutablePath); // to start new instance of application
                            if (this.InvokeRequired)
                            {
                                Action act = () => this.Dispose();
                                this.Invoke(act); //to turn off current app
                            }
                            else
                            {
                                Dispose();
                            }
                        }
                        else if (dialogResult == DialogResult.No)
                        {
                            envoyerMessageNouvellePartie("Non");
                            if (this.InvokeRequired)
                            {
                                Action act = () => this.Dispose();
                                this.Invoke(act); //to turn off current app
                            }
                            else
                            {
                                Dispose();
                            }
                        }
                    }
                }
            }
            else
            {
                if (_monTour)
                {
                    if (LB_MsgAttaque.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                    {
                        Action act1 = () => LB_MsgAttaque.Text = "Manqué!";
                        LB_MsgAttaque.Invoke(act1);
                        Action act2 = () => LB_MsgAttaque.ForeColor = Color.Red;
                        LB_MsgAttaque.Invoke(act2);
                        Action act3 = () => DGV_Attaque.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = manqueStyle;
                        DGV_Attaque.Invoke(act3);
                    }
                    else
                    {
                        LB_MsgAttaque.Text      = "Manqué!";
                        LB_MsgAttaque.ForeColor = Color.Red;
                        DGV_Attaque.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = manqueStyle;
                    }
                }
                else
                {
                    if (LB_MsgAttaque.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
                    {
                        Action act1 = () => LB_MsgAttaque.Text = "Manqué!";
                        LB_MsgAttaque.Invoke(act1);
                        Action act2 = () => LB_MsgAttaque.ForeColor = Color.Green;
                        LB_MsgAttaque.Invoke(act2);
                        Action act3 = () => DGV_Perso.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = manqueStyle;
                        DGV_Perso.Invoke(act3);
                    }
                    else
                    {
                        LB_MsgAttaque.Text      = "Manqué!";
                        LB_MsgAttaque.ForeColor = Color.Green;
                        DGV_Perso.Rows[Int32.Parse(tabreponse[2])].Cells[Int32.Parse(tabreponse[1])].Style = manqueStyle;
                    }
                }
            }
            if (BTN_Attaquer.InvokeRequired)//pour exécuter un délégué qui met à jour le thread d'interface utilisateur
            {
                Action act1 = () => BTN_Attaquer.Enabled = !BTN_Attaquer.Enabled;
                BTN_Attaquer.Invoke(act1);
                Action act2 = () => DGV_Attaque.Refresh();
                DGV_Attaque.Invoke(act2);
                Action act3 = () => this.Refresh();
                this.Invoke(act3);
            }
            else
            {
                BTN_Attaquer.Enabled = !BTN_Attaquer.Enabled;
                DGV_Attaque.Refresh();
                this.Refresh();
            }
            _monTour = !_monTour;
            if (!_monTour)
            {
                RecevoirReponse();
            }
        }