예제 #1
0
파일: Balle.cs 프로젝트: Jeanmilost/Demos
        /// <summary>
        /// Déplace la balle à l'écran
        /// </summary>
        /// <param name="barre">L'objet représentant la barre</param>
        /// <returns>True si le joueur peut encore jouer, false si le joueur a perdu</returns>
        public bool Move(Barre barre)
        {
            // On teste si la limite X est atteinte
            if (m_X <= 0 || m_X >= m_MaxX)
            {
                InvertX();
            }

            // on teste si la limite Y est atteinet
            if (m_Y <= 0)
            {
                InvertY();
            }

            // on teste si la balle a touché la barre
            if (Collisions.IsCollided(new Rectangle(m_X, m_Y, Diametre, Diametre), new Rectangle(barre.X, barre.Y, barre.Width, barre.Y + 20)))
            {
                InvertY();
            }

            // on teste si le joueur a perdu
            if (m_Y >= MaxY)
            {
                return(false);
            }

            // on calcule la nouvelle position de la balle
            m_X += m_OffsetX;
            m_Y += m_OffsetY;

            return(true);
        }
예제 #2
0
        /// <summary>
        /// Est appelé chaque fois que le réveille sonne
        /// </summary>
        /// <param name="sender">L'objet qui a appelé</param>
        /// <param name="e">Ce que l'on peut utiliser</param>
        private void tmDisplay_Tick(object sender, EventArgs e)
        {
            if (m_IsInitialized == false)
            {
                return;
            }

            pbDisplayer.Refresh();

            if (m_Pause == true)
            {
                return;
            }
            else
            {
                if (m_CanPlayMusic == true)
                {
                    m_Music.Play();
                }
            }

            try
            {
                tmDisplay.Enabled = false;

                if (!m_Balle.Move(m_Barre))
                {
                    m_Pause = true;

                    if (m_CanPlayMusic == true)
                    {
                        m_Music.Pause();
                    }

                    if (MessageBox.Show("Tu as perdu !!! Veux-tu rejouer ?", "Casse briques", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
                    {
                        this.Close();
                    }

                    m_Balle.X = (pbDisplayer.Width / 2) - (m_Balle.Diametre / 2);
                    m_Balle.Y = (pbDisplayer.Height / 2) - (m_Balle.Diametre / 2);

                    m_Pause = false;

                    if (m_CanPlayMusic == true)
                    {
                        m_Music.Play();
                    }

                    for (int i = 0; i < 10; ++i)
                    {
                        for (int j = 0; j < 5; ++j)
                        {
                            m_Briques[i, j].IsBroken = false;
                        }
                    }
                }

                bool result = true;

                for (int i = 0; i < 10; ++i)
                {
                    for (int j = 0; j < 5; ++j)
                    {
                        // si la brique n' est pas cassée,et si la balle a touché la brique,on casse la brique
                        if (m_Briques[i, j].IsBroken == false)
                        {
                            if (Collisions.IsCollided(new Rectangle(m_Balle.X, m_Balle.Y, m_Balle.Diametre, m_Balle.Diametre),
                                                      new Rectangle(m_Briques[i, j].X, m_Briques[i, j].Y, m_Briques[i, j].Width, m_Briques[i, j].Height)))
                            {
                                m_Briques[i, j].IsBroken = true;
                                Collisions.Edge(m_Balle, m_Briques[i, j]);
                            }
                        }

                        result &= m_Briques[i, j].IsBroken;
                    }
                }

                if (result == true)
                {
                    m_Pause = true;

                    if (m_CanPlayMusic == true)
                    {
                        m_Music.Pause();
                    }

                    if (MessageBox.Show("tu as gagné, veux-tu rejouer?", "Casse briques", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
                    {
                        this.Close();
                    }

                    m_Balle.X = (pbDisplayer.Width / 2) - (m_Balle.Diametre / 2);
                    m_Balle.Y = (pbDisplayer.Height / 2) - (m_Balle.Diametre / 2);

                    m_Pause = false;

                    if (m_CanPlayMusic == true)
                    {
                        m_Music.Play();
                    }

                    for (int i = 0; i < 10; ++i)
                    {
                        for (int j = 0; j < 5; ++j)
                        {
                            m_Briques[i, j].IsBroken = false;
                        }
                    }
                }
            }
            finally
            {
                tmDisplay.Enabled = true;
            }
        }