Esempio n. 1
0
        /// <summary>
        /// Part une nouvelle partie en lancant une nouvelle pièce et ensuite en démarrant l'horloge.
        /// Lance un événement pour changer le niveau si besoin
        /// </summary>
        public void NouvellePartie()
        {
            for (int i = 1; i < m_uses.Length - 1; i++)
            {
                m_uses[i] = 0;
            }
            m_uses[1] = 1;                        //les escaliers
            m_uses[2] = 1;
            m_uses[0] = m_uses[8] = int.MaxValue; //carré vide et grisé

            Niveau = NiveauDepart;

            m_rangees  = 0;
            m_score    = 0;
            freezeTick = false;

            m_grilleBonus.Clear();

            if (NiveauChanged != null)
            {
                NiveauChanged.Invoke(this, EventArgs.Empty);
            }

            Clear();
            pieceSuivante = pieceCourante = pieceBonus = null;
            PieceSuivante();
            DessinerPieceCourante();
            tmrDrop.Start();
            tmrDrop.Interval          = m_tabDelaiParNiveau[m_niveau];
            tmrKeyRepeatLeft.Enabled  = false;
            tmrKeyRepeatRight.Enabled = false;
            Focus();
        }
Esempio n. 2
0
        /// <summary>
        /// Pour chaque ligne
        ///     Si une seule cellule d’une ligne est vide, on ne supprime pas cette ligne.
        ///     S’il faut supprimer une ligne : on utilise la méthode SupprimerUneLigne(ligne).
        ///     Une fois toutes les lignes supprimées, on redessine toute la grille.
        /// </summary>
        public void SupprimerLignesPleines()
        {
            int lignes = 0;

            for (int row = 0; row < RowCount; row++)
            {
                bool lignePleine = true;

                for (int col = 0; col < ColumnCount; col++)
                {
                    if (this[row, col] == CARRE_VIDE)
                    {
                        lignePleine = false;
                        break;
                    }
                }

                if (lignePleine)
                {
                    SupprimerLaLigne(row);
                    lignes++;
                }
            }

            m_rangees += lignes;
            m_score   += lignes * lignes * 25 * (Niveau + 1);

            while (m_rangees >= m_tabNbLignesParNiveau[Niveau])
            {
                Niveau++;
            }

            if (NiveauChanged != null)
            {
                NiveauChanged.Invoke(this, EventArgs.Empty);
            }
        }