Пример #1
0
        // Игровой цикл
        void GameTimerTick(object sender, EventArgs e)
        {
            if (Game.Paused)
            {
                return;
            }

            GF.DoStep();

            if (!GF.IsFigureFalling)
            {
                //нужно поместить новую фигуру на поле и скрыть полные ряды
                SetScore(Game.Score + GF.RemoveFullRows() * 10);

                if (!GF.PlaceFigure(Game.NextFigure))
                {
                    //игра окончена
                    OnGameOver();
                }
                else
                {
                    Game.NextFigure = Figure.RandomFigure();
                    Game.FiguresDropped++;
                    Preview.Clear();
                    Preview.SetFigure(Game.NextFigure.MoveTo(1, 1), false);

                    if (Game.FigureChanged && Game.FiguresDropped % 5 == 0)
                    {
                        Game.FigureChanged = false;
                    }
                    //ускоряем игру при росте количества очков
                    if (Game.FiguresDropped % 15 == 0 && Game.Score != 0)
                    {
                        if (GameTimer.Interval > 300)
                        {
                            //GameTimer.Enabled=false;
                            GameTimer.Interval -= 100;
                            //GameTimer.Enabled=true;
                        }
                    }
                }
            }

            Refresh();
        }