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(); }
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); }
/// <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); }
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); } }