//定时器 砖块定时下降或无法下降时生成新的砖块 public bool Run() { //判断是否为空 //、lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 lock (m_arr) { if (flog == 1) { m_nextBrick = Bricks.GetSpecialBrick(); } //当前块为空,且下一块为空——新局 if (m_curBrick == null && m_nextBrick == null) { m_curBrick = Bricks.GetBrick(); m_nextBrick = Bricks.GetBrick(); m_nextBrick.RandomShape(); m_curBrick.SetCenterPos(m_curBrick.Appear(), m_columns / 2 - 1); SetArrayValue(); } //当前块为空——下落成功 else if (m_curBrick == null) { flog = 0; m_curBrick = m_nextBrick; m_nextBrick = Bricks.GetBrick(); m_nextBrick.RandomShape(); m_curBrick.SetCenterPos(m_curBrick.Appear(), m_columns / 2 - 1); SetArrayValue(); } else { //如果能下落,清楚当前值,然后移动坐标,赋值 if (m_curBrick.CanDropMove(m_arr, m_rows, m_columns) == true) { ClearCurBrick(); m_curBrick.DropMove(); SetArrayValue(); } //如果不能下落,清楚当前块,重新计算当前高度,判断是否需要清楚行(后面俩项应该顺序换一下) else { m_curBrick = null; SetCurHeight(); ClearRow(); //SetCurHeight(); } } //没到顶就继续 if (m_height < m_rows) { return(true); } else { return(false); } } }
//定时器 砖块定时下降或无法下降时生成新的砖块 public bool Run() { //判断是否为空 lock (m_arr) { if (m_curBrick == null && m_nextBrick == null) { m_curBrick = Bricks.GetBrick(); m_nextBrick = Bricks.GetBrick(); m_nextBrick.RandomShape(); m_curBrick.SetCenterPos(m_curBrick.Appear(), m_columns / 2 - 1); SetArrayValue(); } else if (m_curBrick == null) { m_curBrick = m_nextBrick; m_nextBrick = Bricks.GetBrick(); m_nextBrick.RandomShape(); m_curBrick.SetCenterPos(m_curBrick.Appear(), m_columns / 2 - 1); SetArrayValue(); } else { if (m_curBrick.CanDropMove(m_arr, m_rows, m_columns) == true) { ClearCurBrick(); m_curBrick.DropMove(); SetArrayValue(); } else { m_curBrick = null; SetCurHeight(); ClearRow(); } } if (m_score >= 100) { return(false); } if (m_height < m_rows) { return(true); } else { return(false); } } }
/// <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); }