public void NextBrick() { CurrentBrick = _bricksQueue.Dequeue(); EnqueueNewBrick(); CurrentBrick.RestartPosition(_random.Next(CurrentBoard.Width - CurrentBrick.Width)); if (CurrentBoard.IsColliding(CurrentBrick, 0, 0)) { Alive = false; } }
/// <summary> /// 砖块下移 /// </summary> public void BrickDownMove() { lock (Graphs) { if (CurrentBrick != null && CurrentBrick.CanDropMove(Graphs, Rows, Columns)) { SetGraphs(true); CurrentBrick.DropMove(); SetGraphs(); } } }
/// <summary> /// 砖块右移 /// </summary> public void BrickRightMove() { lock (Graphs) { if (CurrentBrick != null && CurrentBrick.CanRightMove(Graphs, Rows, Columns)) { SetGraphs(true); CurrentBrick.RightMove(); SetGraphs(); } } }
/// <summary> /// 砖块变形 /// </summary> public void BrickTransform() { lock (Graphs) { if (CurrentBrick != null && CurrentBrick.CanTransform(Graphs, Rows, Columns)) { SetGraphs(true); CurrentBrick.Transform(); SetGraphs(); } } }
/// <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); }