Пример #1
0
 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);
        }
Пример #3
0
 public BlocksControl(BlocksShape blocksShape, BlocksStatus blockStatus) : this()
 {
     BlocksShape  = blocksShape;
     BlocksStatus = blockStatus;
     DrawBlocks();
 }