public MovingTetromino(TetrisGameBoard gameBoard)
 {
     m_gameBoard     = gameBoard;
     Rotation        = TetrominoRotation.None;
     Column          = 3; // starts in the middle
     Row             = 0;
     DescriptiveGrid = null;
 }
 public MovingTetromino(TetrisGameBoard gameBoard)
 {
     m_gameBoard = gameBoard;
     Rotation = TetrominoRotation.None;
     Column = 3; // starts in the middle
     Row = 0;
     DescriptiveGrid = null;
 }
 public TetrisGameBoard(TetrisGameBoard source)
 {
     m_rows           = source.m_rows;
     m_columns        = source.m_columns;
     m_horizon        = new int[m_columns];
     m_gameBoardState = new BrickType[source.m_rows, source.m_columns];
     Array.Copy(source.m_gameBoardState, m_gameBoardState, m_columns * m_rows);
     CalculateHorizon();
 }
        public static MovingTetromino CreateMovingTetromino(TetrisGameBoard gameBoard, BrickType brick)
        {
            MovingTetromino inst = null;

            switch (brick)
            {
            case BrickType.J:
            {
                inst = new MovingTetrominoJ(gameBoard);
                break;
            }

            case BrickType.L:
            {
                inst = new MovingTetrominoL(gameBoard);
                break;
            }

            case BrickType.O:
            {
                inst = new MovingTetrominoO(gameBoard);
                break;
            }

            case BrickType.S:
            {
                inst = new MovingTetrominoS(gameBoard);
                break;
            }

            case BrickType.T:
            {
                inst = new MovingTetrominoT(gameBoard);
                break;
            }

            case BrickType.Z:
            {
                inst = new MovingTetrominoZ(gameBoard);
                break;
            }

            default:
            case BrickType.I:
            {
                inst = new MovingTetrominoI(gameBoard);
                break;
            }
            }
            inst.InitializeDescriptiveGrid();
            return(inst);
        }
        private void ReinitGameBoard()
        {
            m_world.BrickAreaOutput.Fill((float)BrickType.None);

            m_world.HintAreaOutput.Fill((float)BrickType.None);

            m_world.NextBrickNumberOutput.Fill(0.0f);

            m_world.ScoreOutput.Fill(0.0f);

            m_world.ScoreDeltaOutput.Fill(0.0f);

            m_world.LevelOutput.Fill(0.0f);

            // erase visual output not necessary - done by RenderTask

            m_gameBoard = new TetrisGameBoard(m_world.BrickAreaColumns, m_world.BrickAreaRows);

            // add almost full lines
            for (int iRow = 0; iRow < m_params.AlmostFullLinesAtStart; iRow++)
            {
                int iRowIndex = m_world.BrickAreaRows - 1 - iRow;
                for (int iCol = 0; iCol < m_world.BrickAreaColumns; iCol++)
                {
                    m_gameBoard.GameBoardState[iRowIndex, iCol] = BrickType.Preset;
                }
                int holeIndex = m_rndGen.Next(0, 10);
                m_gameBoard.GameBoardState[iRowIndex, holeIndex] = BrickType.None;
            }

            m_stepsFromLastDrop    = 0;
            m_level                = 0;
            m_score                = 0;
            m_scoreDelta           = 0;
            m_shouldSpawnTetromino = true;
            m_tetromino            = null;
            m_totalErasedLines     = 0;
            PrepareNextTetromino();
        }
        private void FillBrickAreaOutput()
        {
            TetrisGameBoard gameBoardMerged = new TetrisGameBoard(m_gameBoard);

            if (m_tetromino != null)
            {
                gameBoardMerged.MergeTetrominoWithGameBoard(m_tetromino);
            }

            BrickType[,] gameBoardGrid = gameBoardMerged.GameBoardState;
            int index = 0;

            for (int iRow = 0; iRow < gameBoardGrid.GetLength(0); iRow++)
            {
                for (int iCol = 0; iCol < gameBoardGrid.GetLength(1); iCol++)
                {
                    m_world.BrickAreaOutput.Host[index] = (float)gameBoardGrid[iRow, iCol];
                    index++;
                }
            }
            m_world.BrickAreaOutput.SafeCopyToDevice();
        }
 public TetrisGameBoard(TetrisGameBoard source)
 {
     m_rows = source.m_rows;
     m_columns = source.m_columns;
     m_horizon = new int[m_columns];
     m_gameBoardState = new BrickType[source.m_rows, source.m_columns];
     Array.Copy(source.m_gameBoardState, m_gameBoardState, m_columns * m_rows);
     CalculateHorizon();
 }
 public MovingTetrominoZ(TetrisGameBoard gameBoard)
     : base(gameBoard)
 {
 }
 public static MovingTetromino CreateMovingTetromino(TetrisGameBoard gameBoard, BrickType brick)
 {
     MovingTetromino inst = null;
     switch(brick)
     {
         case BrickType.J:
             {
                 inst = new MovingTetrominoJ(gameBoard);
                 break;
             }
         case BrickType.L:
             {
                 inst = new MovingTetrominoL(gameBoard);
                 break;
             }
         case BrickType.O:
             {
                 inst = new MovingTetrominoO(gameBoard);
                 break;
             }
         case BrickType.S:
             {
                 inst = new MovingTetrominoS(gameBoard);
                 break;
             }
         case BrickType.T:
             {
                 inst = new MovingTetrominoT(gameBoard);
                 break;
             }
         case BrickType.Z:
             {
                 inst = new MovingTetrominoZ(gameBoard);
                 break;
             }
         default:
         case BrickType.I:
             {
                 inst = new MovingTetrominoI(gameBoard);
                 break;
             }
     }
     inst.InitializeDescriptiveGrid();
     return inst;
 }
        private void ReinitGameBoard()
        {
            m_world.BrickAreaOutput.Fill((float)BrickType.None);

            m_world.HintAreaOutput.Fill((float)BrickType.None);

            m_world.NextBrickNumberOutput.Fill(0.0f);

            m_world.ScoreOutput.Fill(0.0f);

            m_world.ScoreDeltaOutput.Fill(0.0f);

            m_world.LevelOutput.Fill(0.0f);

            // erase visual output not necessary - done by RenderTask

            m_gameBoard = new TetrisGameBoard(m_world.BrickAreaColumns, m_world.BrickAreaRows);

            // add almost full lines
            for(int iRow = 0; iRow < m_params.AlmostFullLinesAtStart; iRow++)
            {
                int iRowIndex = m_world.BrickAreaRows - 1 - iRow;
                for(int iCol = 0; iCol < m_world.BrickAreaColumns; iCol++)
                {
                    m_gameBoard.GameBoardState[iRowIndex,iCol] = BrickType.Preset;
                }
                int holeIndex = m_rndGen.Next(0, 10);
                m_gameBoard.GameBoardState[iRowIndex, holeIndex] = BrickType.None;
            }

            m_stepsFromLastDrop = 0;
            m_level = 0;
            m_score = 0;
            m_scoreDelta = 0;
            m_shouldSpawnTetromino = true;
            m_tetromino = null;
            m_totalErasedLines = 0;
            PrepareNextTetromino();
        }
        private void FillBrickAreaOutput()
        {
            TetrisGameBoard gameBoardMerged = new TetrisGameBoard(m_gameBoard);
            if (m_tetromino != null)
            {
                gameBoardMerged.MergeTetrominoWithGameBoard(m_tetromino);
            }

            BrickType[,] gameBoardGrid = gameBoardMerged.GameBoardState;
            int index = 0;
            for (int iRow = 0; iRow < gameBoardGrid.GetLength(0); iRow++)
            {
                for (int iCol = 0; iCol < gameBoardGrid.GetLength(1); iCol++)
                {
                    m_world.BrickAreaOutput.Host[index] = (float)gameBoardGrid[iRow, iCol];
                    index++;
                }
            }
            m_world.BrickAreaOutput.SafeCopyToDevice();
        }
 public MovingTetrominoZ(TetrisGameBoard gameBoard) : base(gameBoard)
 {
 }
Beispiel #13
0
 public TetrisGameBoard(TetrisGameBoard source)
 {
     m_rows = source.m_rows;
     m_columns = source.m_columns;
     m_gameBoardState = new BrickType[source.m_rows, source.m_columns];
     Array.Copy(source.m_gameBoardState, m_gameBoardState, m_columns * m_rows);
 }