private void button_Click(object sender, RoutedEventArgs e) { Master.Children.Clear(); Master.Children.Add(new BlocksControl(blocksShape, blocksStatus)); if (++blocksStatus > BlocksStatus.Rotation270) { blocksStatus = BlocksStatus.RotationZero; blocksShape++; if (blocksShape > BlocksShape.TType) { blocksShape = BlocksShape.OType; } } }
/// <summary> /// 判断是否可以变形 /// </summary> /// <returns></returns> private bool isCheckTransformation() { BlocksShape blocksShapeTemp = Game.CurrentBlocks.BlocksShape; BlocksStatus blocksStatusTemp = Game.CurrentBlocks.BlocksStatus; if (blocksStatusTemp + 1 > BlocksStatus.Rotation270) { blocksStatusTemp = BlocksStatus.RotationZero; } else { blocksStatusTemp = blocksStatusTemp + 1; } for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { if (BlocksControl.blockArray[(int)blocksShapeTemp - 1, (int)blocksStatusTemp, y, x] == 1) { if (Game.currentY < 0) { return(false); } // 判断右边 if (x + Game.currentX >= Game.backGroundX) { return(false); } // 判断左边 if (x + Game.currentX < 0) { return(false); } // 判断下边 if (y + Game.currentY >= Game.backGroundY - 1) { return(false); } // 判断四周是否有砖,需要放在最后一个,不然可能出险数组超界的情况 if (Game.backGround[y + Game.currentY, x + Game.currentX] != 0) { return(false); } } } } return(true); }
public static FallingBlock Generate(BlocksShape shape, Point origin) { FallingBlock result; switch (shape) { case BlocksShape.I: result = new FallingBlockI(origin, BlockColor.Red); break; case BlocksShape.J: result = new FallingBlockJ(origin, BlockColor.Blue); break; case BlocksShape.L: result = new FallingBlockL(origin, BlockColor.Orange); break; case BlocksShape.O: result = new FallingBlockO(origin, BlockColor.Yellow); break; case BlocksShape.S: result = new FallingBlockS(origin, BlockColor.Violet); break; case BlocksShape.T: result = new FallingBlockT(origin, BlockColor.Azure); break; case BlocksShape.Z: result = new FallingBlockZ(origin, BlockColor.Green); break; default: throw new Exception("unknown block shape"); } return(result); }
public BlockControl(BlocksShape blocksShape) : this() { BlocksShape = blocksShape; }
public BlocksControl(BlocksShape blocksShape, BlocksStatus blockStatus) : this() { BlocksShape = blocksShape; BlocksStatus = blockStatus; DrawBlocks(); }