Пример #1
0
        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);
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        /// <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();
            }
        }
Пример #4
0
 private void ChangeColorFig(int index)
 {
     FigureParams.SetColor(MainT.NameFig, AllFigBrushes[index]);
     Main.TetraminoErase(MainT);
     MainT = new Tetramino(MainT.NameFig);
     MainT.MoveDown();
     Main.TetraminoDraw(MainT);
 }
Пример #5
0
 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;
 }
Пример #6
0
        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();
        }
Пример #7
0
        /// <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; //бонус за новую фигуру
            }
        }