/// <summary> /// Фигуру влево /// </summary> public void CurentTetraminoMoveLeft() { Point pos = currentTetramino.Position; Point[] figure = currentTetramino.Cells; bool canMove = true; TetrisField.TetraminoErase(currentTetramino); foreach (Point P in figure) { // не можем сдвинуть влево - у левой границы поля if (((int)(P.X + pos.X) + ((TetrisField.columns / 2) - 1) - 1) < 0) { canMove = false; } // не можем влево - слева стоит фигура else if (TetrisField.Field[((int)(P.X + pos.X) + ((TetrisField.columns / 2) - 1) - 1), (int)(P.Y + pos.Y)].Fill != GridField.fieldBrush) { canMove = false; } } if (canMove) { currentTetramino.MoveLeft(); } TetrisField.TetraminoDraw(currentTetramino); }
/// <summary> /// Фигуру вниз /// </summary> public void CurTetraminoMovDown(bool CoolGame = false) { // бонус за быструю игру (нажата кнопка вниз) if (CoolGame) { score += 1 * lvl; } Point pos = currentTetramino.Position; Point[] figure = currentTetramino.Cells; bool canMove = true; TetrisField.TetraminoErase(currentTetramino); foreach (Point S in figure) { if (((int)(S.Y + pos.Y) + 1) >= TetrisField.rows) { canMove = false; } else if (TetrisField.Field[((int)(S.X + pos.X) + ((TetrisField.columns / 2) - 1)), (int)(S.Y + pos.Y) + 1].Fill != GridField.fieldBrush) { canMove = false; } } if (canMove) { currentTetramino.MoveDown(); TetrisField.TetraminoDraw(currentTetramino); } else { TetrisField.TetraminoDraw(currentTetramino); CheckRows(); CheckGameOver(); currentTetramino = nextTetramino; NextFigGrid.TetraminoErase(nextTetramino); nextTetramino = new Tetramino(); NextFigGrid.TetraminoDraw(nextTetramino); score += lvl * 10; //бонус за новую фигуру } }