Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Создать игровое поле
        /// </summary>
        /// <param name="TetrisGrid">Grid основного игрового поля</param>
        /// <param name="NextFigGrid">Grid для показа следующей фигуры</param>
        public Table(Grid TetrisGrid, Grid NextFigGrid)
        {
            TetrisField      = new GridField(TetrisGrid);
            this.NextFigGrid = new GridField(NextFigGrid);
            LvlUp            = false;
            score            = 0;
            linesAssembled   = 0;
            lvl = 1;
            thisLevelLinesAssembled = 0;

            currentTetramino = new Tetramino();
            TetrisField.TetraminoDraw(currentTetramino);
            nextTetramino = new Tetramino();
            this.NextFigGrid.TetraminoDraw(nextTetramino);
        }
Exemplo n.º 3
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; //бонус за новую фигуру
            }
        }