/// <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); }
/// <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; } }