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 BlocksControl(BlocksShape blocksShape, BlocksStatus blockStatus) : this() { BlocksShape = blocksShape; BlocksStatus = blockStatus; DrawBlocks(); }