예제 #1
0
파일: Tetris.cs 프로젝트: liana23/Demos
        private static void SetBlock(int horizontalPosition, int verticalPosition, BridgeTetris.Tetris.PieceType pieceType)
        {
            if (horizontalPosition >= 0 && horizontalPosition < BridgeTetris.Tetris.tetrisCourtWidth)
            {
                BridgeTetris.Tetris.tetrisCourt[horizontalPosition, verticalPosition] = pieceType;
            }

            BridgeTetris.Tetris.Invalidate();
        }
예제 #2
0
파일: Tetris.cs 프로젝트: liana23/Demos
        private static BridgeTetris.Tetris.PieceType GetBlock(int horizontalPosition, int verticalPosition)
        {
            BridgeTetris.Tetris.PieceType retval = null;

            if (horizontalPosition >= 0 && horizontalPosition < BridgeTetris.Tetris.tetrisCourtWidth &&
                BridgeTetris.Tetris.tetrisCourt.Length > ((horizontalPosition + 1) * BridgeTetris.Tetris.tetrisCourtWidth) &&
                verticalPosition > 0 && verticalPosition < BridgeTetris.Tetris.tetrisCourtHeight)
            {
                retval = BridgeTetris.Tetris.tetrisCourt[horizontalPosition, verticalPosition];
            }

            return(retval);
        }
예제 #3
0
파일: Tetris.cs 프로젝트: liana23/Demos
        /// <summary>
        /// do the bit manipulation and iterate through each
        /// occupied block (x,y) for a given piece
        /// </summary>
        /// <param name="pieceType"></param>
        /// <param name="horizontalPositon"></param>
        /// <param name="verticalPosition"></param>
        /// <param name="direction"></param>
        /// <param name="fn"></param>
        private static Tuple <int, int>[] Eachblock(BridgeTetris.Tetris.PieceType pieceType, int horizontalPositon, int verticalPosition, short direction)
        {
            int row    = 0;
            int column = 0;
            int blocks = pieceType.Blocks[direction];

            Tuple <int, int>[] result = new Tuple <int, int> [0];

            for (int bit = 0x8000; bit > 0; bit = bit >> 1)
            {
                if ((blocks & bit) > 0)
                {
                    result.Push(new Tuple <int, int>(horizontalPositon + column, verticalPosition + row));
                }

                if (++column == 4)
                {
                    column = 0;
                    ++row;
                }
            }

            return(result);
        }
예제 #4
0
파일: Tetris.cs 프로젝트: liana23/Demos
        private static void DrawPiece(CanvasRenderingContext2D specifiedCanvasContext, BridgeTetris.Tetris.PieceType pieceType,
                                      int horizontalPosition, int verticalPosition, short direction)
        {
            var matchingCells = BridgeTetris.Tetris.Eachblock(pieceType, horizontalPosition, verticalPosition, direction);

            foreach (var tuple in matchingCells)
            {
                BridgeTetris.Tetris.DrawBlock(specifiedCanvasContext, tuple.Item1, tuple.Item2, pieceType.Color);
            }
        }