private void RePaintFig(char f = '0') { Tetramino t = new Tetramino(); t.MoveDown(); if (FigureParams.CellsDic.Keys.Contains(f)) { GetGridField(f).DrowField(); t = new Tetramino(f); t.MoveDown(); GetGridField(f).TetraminoDraw(t); } else { foreach (var item in FigureParams.CellsDic.Keys) { GetGridField(item).DrowField(); t = new Tetramino(item); t.MoveDown(); GetGridField(item).TetraminoDraw(t); } Main.DrowField(); Main.TetraminoDraw(MainT); } }
public void CurrentTetraminoMoveDown() { var position = _currentTetramino.GetCurrentPosition(); var shape = _currentTetramino.GetCurrentShape(); var move = true; CurrentTetraminoErase(); foreach (var point in shape) { if (((int)(point.Y + position.Y) + 2 + 1) >= _rows) { move = false; } else if ( !Equals(_blockControls[ ((int)(point.X + position.X) + ((_cols / 2) - 1)), (int)(point.Y + position.Y) + 2 + 1] .Background, NoBrush)) { move = false; } } if (move) { _currentTetramino.MoveDown(); CurrentTetraminoDraw(); } else { CurrentTetraminoDraw(); CheckRows(); _currentTetramino = new Tetramino(); } }
/// <summary> /// テトリミノが落ちたときの処理 /// </summary> public void CurrentTetriminoMoveDown() { // テトリミノの位置 Point position = _currentTetrimino.GetCurrentPosition(); Point[] Shape = _currentTetrimino.GetCurrentShape(); bool move = true; CurrentTetriminoErase(); foreach (Point s in Shape) { if ((int)(s.Y + position.Y + 2 + 1) >= Rows) { move = false; } else if (BlockControls[((int)(s.X + position.X) + ((Cols / 2) - 1)), (int)(s.Y + position.Y) + 2 + 1].Background != NoBrush) { move = false; } } if (move) { _currentTetrimino.MoveDown(); CurrentTetriminoDraw(); } else { CurrentTetriminoDraw(); CheckRows(); _currentTetrimino = new Tetramino(); } }
private void ChangeColorFig(int index) { FigureParams.SetColor(MainT.NameFig, AllFigBrushes[index]); Main.TetraminoErase(MainT); MainT = new Tetramino(MainT.NameFig); MainT.MoveDown(); Main.TetraminoDraw(MainT); }
private void FigGrid_J_MouseUp(object sender, MouseButtonEventArgs e) { CancelButton_Click(sender, e); Main.TetraminoErase(MainT); MainT = new Tetramino((sender as Grid).Name.Last()); MainT.MoveDown(); Main.TetraminoDraw(MainT); indexFig = AllFigBrushes.FindIndex(x => x == MainT.Color); FigColor = MainT.Color; }
public CustomWindow() { InitializeComponent(); AllFigBrushes = new List <Brush>(10) { Brushes.Cyan, Brushes.Orange, Brushes.Red, Brushes.Yellow, Brushes.Purple, Brushes.Blue, Brushes.Green, }; int count = AllFigBrushes.Count; for (int i = 0; i < count; i++) { AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.White, 90)); AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.White, 45)); AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.White, 0)); AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.Black, 90)); AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.Black, 45)); AllFigBrushes.Add(new LinearGradientBrush(((SolidColorBrush)AllFigBrushes[i]).Color, Colors.Black, 0)); } AllFieldBrushes = new List <Brush>(10) { Brushes.White, Brushes.Black, Brushes.DarkBlue, Brushes.Silver }; I = new GridField(FigGrid_I); J = new GridField(FigGrid_J); L = new GridField(FigGrid_L); T = new GridField(FigGrid_T); S = new GridField(FigGrid_S); Z = new GridField(FigGrid_Z); O = new GridField(FigGrid_O); Main = new GridField(MainGrid); MainT = new Tetramino('I'); indexFig = AllFigBrushes.FindIndex(x => x == MainT.Color); indexField = AllFieldBrushes.FindIndex(x => x == GridField.fieldBrush); indexGran = AllFieldBrushes.FindIndex(x => x == GridField.granBrush); FigColor = MainT.Color; MainT.MoveDown(); GranColor.Fill = GranBrush; FieldColor.Fill = FieldBrush; RePaintFig(); }
/// <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; //бонус за новую фигуру } }