protected void RotateFigure() { FigureCorner OldFigureCorner; byte[,] CurSheet = new byte[maxFigureSize, maxFigureSize]; ClearFigureIntoGlass(); if (TryRotate()) { OldFigureCorner = FigureCorner; if (FigureCorner > FigureCorner.Corner00) { FigureCorner--; } else { FigureCorner = FigureCorner.Corner270; } RotateFigureWorksheet(CurSheet); if (!PutFigureIntoGlass(MoveDirection.Down)) { FigureCorner = OldFigureCorner; RotateFigureWorksheet(CurSheet); PutFigureIntoGlass(MoveDirection.Down); } } else { PutFigureIntoGlass(MoveDirection.Down); } }
protected void GenerateNewFigure() { Random rnd = new Random(); StopTimer(); SecondFigure = FirstFigure; if (SecondColor == FirstColor) { SecondColor = (byte)(rnd.Next(maxFigureColor) + 1); } else { SecondColor = FirstColor; } FigureType = SecondFigure; FigureX = 5; FigureY = 0; FigureCorner = FigureCorner.Corner270; Array.Clear(FigureWorkSheet, 0, FigureWorkSheet.Length); switch (FigureType) { case 0: ArrayCopyTo(Triada, FigureWorkSheet); break; case 1: ArrayCopyTo(LCorner, FigureWorkSheet); break; case 2: ArrayCopyTo(RCorner, FigureWorkSheet); break; case 3: ArrayCopyTo(LZigzag, FigureWorkSheet); break; case 4: ArrayCopyTo(RZigzag, FigureWorkSheet); break; case 5: ArrayCopyTo(Stick, FigureWorkSheet); break; case 6: ArrayCopyTo(Box, FigureWorkSheet); break; default: break; } SetFigureColor(); FirstFigure = (byte)rnd.Next(maxFigureNumber); FirstColor = (byte)(rnd.Next(maxFigureColor) + 1); StartTimer(interval); }