Exemplo n.º 1
0
 protected virtual void OnLinesCleared(LinesEventArgs e)
 {
     if (LinesCleared != null)
     {
         LinesCleared.Invoke(this, e);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Method to be called when a line of bricks stack is cleared.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GameBoard_LineCleared(object sender, EventArgs e)
 {
     LinesCleared += 1;
     Score        += Level * 10;
     UpdateInfo(0, Score.ToString());
     UpdateInfo(2, LinesCleared.ToString());
     if (LinesCleared % 10 == 0)
     {
         Level += 1;
         UpdateInfo(1, Level.ToString());
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Game constructor.
        /// </summary>
        public Game()
        {
            Level                  = 1;
            Score                  = 0;
            LinesCleared           = 0;
            GameBoard              = new Board(new int[] { 10, 20 }, new int[] { 2, 1 });
            GameBoard.LineCleared += GameBoard_LineCleared;

            UpdateInfo(0, Score.ToString());
            UpdateInfo(1, Level.ToString());
            UpdateInfo(2, LinesCleared.ToString());

            IsOver = false;
        }
Exemplo n.º 4
0
        private void ClearLinesFromDeadGrid()
        {
            var        oldGrid       = (ShapeEnum[, ])deadGrid.Clone();
            List <int> yLinesToClear = new List <int>();

            for (int y = 0; y < deadGrid.GetLength(1); y++)
            {
                bool fullLine = true;
                for (int x = 0; x < deadGrid.GetLength(0); x++)
                {
                    if (deadGrid[x, y] == ShapeEnum.Empty)
                    {
                        fullLine = false;
                        break;
                    }
                }
                if (fullLine)
                {
                    yLinesToClear.Add(y);

                    for (int ytoClear = y; ytoClear > 0; ytoClear--)
                    {
                        for (int x = 0; x < deadGrid.GetLength(0); x++)
                        {
                            deadGrid[x, ytoClear] = deadGrid[x, ytoClear - 1];
                        }
                    }
                }
            }

            if (yLinesToClear.Any())
            {
                totalLinesCleared += yLinesToClear.Count();
                LinesAboutToClear.Invoke(this, oldGrid);
                LinesCleared.Invoke(this, yLinesToClear.ToArray());
            }
        }