示例#1
0
        public void DropFullLines()
        {
            List <bool[]> linesToKeep = new List <bool[]>();

            for (int line = 0; line < Settings.LineNumber; line++)
            {
                bool lineHasGaps = false;
                for (int column = 0; column < Settings.ColumnNumber; column++)
                {
                    if (!BoolData[line, column])
                    {
                        lineHasGaps = true;
                        break;
                    }
                }

                if (lineHasGaps)
                {
                    bool[] lineToKeep = new bool[Settings.ColumnNumber];
                    for (int column = 0; column < Settings.ColumnNumber; column++)
                    {
                        lineToKeep[column] = BoolData[line, column];
                    }

                    linesToKeep.Add((bool[])lineToKeep.Clone());
                }
            }

            int emptyLinesToAdd = BoolData.GetLength(0) - linesToKeep.Count;

            UpdateScores(emptyLinesToAdd);

            bool[,] newBoolData = new bool[Settings.LineNumber, Settings.ColumnNumber];

            for (int line = emptyLinesToAdd; line < Settings.LineNumber; line++)
            {
                for (int column = 0; column < Settings.ColumnNumber; column++)
                {
                    newBoolData[line, column] = linesToKeep[line - emptyLinesToAdd][column];
                }
            }

            BoolData = (bool[, ])newBoolData.Clone();
        }