示例#1
0
 public void NextBrick()
 {
     CurrentBrick = _bricksQueue.Dequeue();
     EnqueueNewBrick();
     CurrentBrick.RestartPosition(_random.Next(CurrentBoard.Width - CurrentBrick.Width));
     if (CurrentBoard.IsColliding(CurrentBrick, 0, 0))
     {
         Alive = false;
     }
 }
示例#2
0
 /// <summary>
 /// 砖块下移
 /// </summary>
 public void BrickDownMove()
 {
     lock (Graphs)
     {
         if (CurrentBrick != null && CurrentBrick.CanDropMove(Graphs, Rows, Columns))
         {
             SetGraphs(true);
             CurrentBrick.DropMove();
             SetGraphs();
         }
     }
 }
示例#3
0
 /// <summary>
 /// 砖块右移
 /// </summary>
 public void BrickRightMove()
 {
     lock (Graphs)
     {
         if (CurrentBrick != null && CurrentBrick.CanRightMove(Graphs, Rows, Columns))
         {
             SetGraphs(true);
             CurrentBrick.RightMove();
             SetGraphs();
         }
     }
 }
示例#4
0
 /// <summary>
 /// 砖块变形
 /// </summary>
 public void BrickTransform()
 {
     lock (Graphs)
     {
         if (CurrentBrick != null && CurrentBrick.CanTransform(Graphs, Rows, Columns))
         {
             SetGraphs(true);
             CurrentBrick.Transform();
             SetGraphs();
         }
     }
 }
示例#5
0
        /// <summary>
        /// 定时器砖块下移
        /// </summary>
        /// <returns></returns>
        public bool Run()
        {
            //判断是否为空
            lock (Graphs)
            {
                if (CurrentBrick == null && NextBrick == null)
                {
                    CurrentBrick = GetBrick();
                    NextBrick    = GetBrick();
                    NextBrick.RandomShape();
                    CurrentBrick.SetCenterPos(Columns / 2 - 1, CurrentBrick.Appear());
                    SetGraphs();
                }
                else if (CurrentBrick == null)
                {
                    CurrentBrick = NextBrick;
                    NextBrick    = GetBrick();
                    NextBrick.RandomShape();
                    CurrentBrick.SetCenterPos(Columns / 2 - 1, CurrentBrick.Appear());
                    SetGraphs();
                }
                else
                {
                    if (CurrentBrick.CanDropMove(Graphs, Rows, Columns))
                    {
                        //清除数据
                        SetGraphs(true);
                        CurrentBrick.DropMove();
                        SetGraphs();
                    }
                    else
                    {
                        CurrentBrick = null;
                        CurrentHeightCount();
                        ClearRow();
                    }
                }
            }

            if (CurrentScore >= 100 || CurrentHeight >= Rows)
            {
                return(false);
            }

            return(true);
        }